0
name: my-lib
apps:
library-sample:
command: library_sample $SNAP/arg_file.json
parts:
library:
source: https://github.com/the/sample.git
plugin: cmake
install: |
cp -r samples/library_sample $SNAPCRAFT_PART_INSTALL/
cp -r ../src/samples/src/arg_file.json $SNAPCRAFT_PART_INSTALL/
cp --parents modules/dep_lib1/libdep_lib1.so $SNAPCRAFT_PART_INSTALL/
cp --parents modules/dep_lib2/libdep_lib2.so $SNAPCRAFT_PART_INSTALL/
このスナップを作成すると、my-lib.library_sample
を実行できます。サンプルは、相対パスを使用して、依存ライブラリをロードしようとしたときしかし、それはフォルダは、私が期待するように見えるインストール私の道./modules/dep_lib1/libdep_lib1.so
スナップパッケージ内の相対パスを解決するにはどうすればよいですか?
を使用して失敗します。
parts/library/install/
|-- arg_file.json
|-- library-sample
|-- include
| |-- ...
|-- lib
| |-- ...
|-- modules
|-- dep_lib1
| |-- libdep_lib1.so
|-- dep_lib2
|-- libdep_lib2.so
あなたはlibrary-sample:
ためcommand:
を見れば、 arg_file.json
を正しくロードするためには、相対パスの先頭に$SNAP
という接頭語を付ける必要があることがわかります。しかし、引数ファイル内の依存関係ライブラリには相対パスが指定されており、接頭辞を付けることはできません。
スナップパッケージ内の相対パスを解決するにはどうすればよいですか?
私はそこに何か問題があるのを見ていません - 相対パスはうまくいくはずです。ライブラリはどのくらい正確にロードされていますか?どのようなエラーが発生していますか? – Kyle
'dlopen(" ./ modules/dep_lib1/libdep_lib1.so "、RTLD_LAZY);' – Zak
'dlopen'の相対パスは現在の作業ディレクトリに対して相対パスであり、バイナリを呼び出す場所ではありません。 – Kyle