繁体   English   中英

使用快照安装共享库

[英]Install shared library using snap

我有项目,这是由cmake构建的,我想要带有snap的软件包。 项目包括可执行文件和库(将称为a和liba )。

我的snapcraft.yaml文件如下所示:

name: a
version: "0.9"
summary: xyz
description: xyz
grade: devel # must be 'stable' to release into candidate/stable channels
confinement: strict

apps:
  a:
    command: a

parts:
  a:
    plugin: cmake
    source: ./a.zip
    filesets:
      manpages: [ usr/share/man ]

在CMake中, a取决于liba (实际上, a只是liba的 “包装器”,用于bash脚本中)。 当我使用Snapcraft构建项目并安装该软件包(以--dangerous身份安装)时,从终端运行命令a即可正常工作。 但是,当我尝试构建依赖于liba的应用程序(使用gcc )时,出现了以/ usr / bin / x86_64-linux-gnu-ld结尾的问题:找不到-la错误消息。 首先我必须包括报头,即使他们都已经安装到系统默认包括使用目录“-I /卡/年/电流...”(我明白卡入/快/目录中安装文件,但也许我我只是在用snapcraft.yaml做错事了。 然后我从上面的ld得到消息。

我是全新的snap软件包,这是我的第一个项目。 是否可以将liba安装为系统库(在使用gcc构建时可见,使用系统默认目录中的include)?

也许可以通过依赖于liba 构建将aliba分成不同的软件包,但是我不确定它是否可以解决共享库的安装问题。

您对此问题有经验吗? 有什么建议吗? 感谢您的回答。

恐怕快照并不十分适合您要尝试执行的操作。 它们对于最终用户应用程序非常有用(例如,使lib在脚本中有用的包装器),但是从设计上来说,它们与系统的其余部分是隔离的。 可以在其中运送库以供其他应用程序使用,但是这些应用程序将需要在/snap/<snap name>/current/某个位置查找库和标头,该库和标头肯定不在默认搜索路径上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM