我有一个项目,它是由cmake构建的,我想要带有snap 的包。项目包括可执行文件和库(让我们称之为它和力霸)。
我的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只是用于 bash 脚本的liba 的“包装器” )。当我使用 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,但我不确定它是否有助于解决共享库安装问题。
你有这个问题的经验吗?有什么建议吗?感谢您的回答。
恐怕快照不太适合您要执行的操作。它们非常适合最终用户应用程序(例如,使 lib 在脚本中有用的包装器),但在设计上它们与系统的其余部分隔离。可以在其中传送库以供其他应用程序使用,但这些应用程序需要在/snap/<snap name>/current/
.
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句