如何从 snap 包中解析相对路径?

扎克
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

如果您查看command:for library-sample:,您会发现我需要在相对路径前加上前缀$SNAP,以便arg_file.json正确加载示例但是,参数文件中的依赖库指定了相对路径,我无法添加前缀。

如何从 snap 包中解析相对路径?

凯罗法

中的相对路径dlopen相对于当前工作目录,而不是调用它的二进制文件的位置。确保你考虑到这一点。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章