我有项目,它是由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: cannot find -la ”错误消息结尾的问题。首先,即使它们已使用“ -I/snap/a/current... ”安装到系统默认包含目录中,我也必须包含标题。"(我知道 snap 安装文件到/snap/目录,但也许我只是对 snapcraft.yaml 做错了)。然后我从上面的ld收到消息。
我是 snap 包的新手,这是我的第一个项目。是否有可能将liba安装为系统库(使用 gcc 构建时可见,使用系统默认目录中的包含)?
也许它会帮助将a和liba拆分为不同的包,构建依赖于liba,但我不确定它是否有助于解决共享库安装问题。
你对这个问题有一些经验吗?有什么建议吗?感谢您的回答。