如何从 snap 包中解析相对路径?
How can I resolve relative paths from within a snap package?
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:
,您会发现我需要在相对路径前加上 $SNAP
前缀才能加载样本 arg_file.json
正确。但是,在参数文件中为依赖库指定了相对路径,我无法添加前缀。
如何从 snap 包中解析相对路径?
dlopen
中的相对路径是相对于当前工作目录的,而不是调用它的二进制文件的位置。确保你考虑到这一点。
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:
,您会发现我需要在相对路径前加上 $SNAP
前缀才能加载样本 arg_file.json
正确。但是,在参数文件中为依赖库指定了相对路径,我无法添加前缀。
如何从 snap 包中解析相对路径?
dlopen
中的相对路径是相对于当前工作目录的,而不是调用它的二进制文件的位置。确保你考虑到这一点。