【发布时间】:2019-02-03 07:28:09
【问题描述】:
我有一个项目,它是由 cmake 构建的,我想用 snap 打包。项目包括可执行文件和库(让我们调用 it 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/snap/a/current...”安装到系统默认的 include 目录中(我明白将安装文件快速安装到 /snap/ 目录中,但也许我只是对 snapcraft.yaml 做错了)。然后我从上面的 ld 收到消息。
我是 snap 包的新手,这是我的第一个项目。是否有可能将 liba 安装为系统库(使用 gcc 构建时可见,使用系统默认目录中的包含)?
也许这将有助于将 a 和 liba 拆分为不同的包,其中 a 构建依赖于 liba,但我不确定它是否有助于解决共享库安装问题。
您对这个问题有一些经验吗?有什么建议吗?感谢您的回答。
【问题讨论】:
标签: c++ cmake installation shared-libraries snapcraft