1

我正在尝试新的 linux 打包工具http://snapcraft.io/create/

它确实有一些文档,但不是很成熟,也不包含所有内容。

我要做的是为我的二进制文件生成一个包,该包是使用 Qt 框架编译的,因此它依赖于 .so 文件的加载。我在文档中找不到任何方法来说服 snapcraft 提取所有这些依赖项并将它们添加到程序层次结构(已安装的 squashfs)中。

因此,为了“暂时解决这个问题”,我破解了一个非常蹩脚的 shell 脚本,它在我的二进制文件上执行 ldd 并自行执行此操作。这种“有点”有效,因为现在确实所有必要的库都在图像中,但是程序找不到它们,因为它们中的大多数都有自己的路径并且不在根 lib 文件夹中/usr/lib

我尝试启动程序时遇到的错误示例是:

/snap/huggle/x1/usr/bin/huggle: error while loading shared libraries: libGL.so.1: cannot open shared object file: No such file or directory

但是图书馆在那里:

/snap/huggle/x1/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1

它只是不知道如何找到它。另一方面,鉴于 snapcraft 被宣传为很棒的简单愚蠢的打包工具,我觉得很奇怪,像打包 C++ 二进制文件这样简单的事情会如此复杂。我应该如何正确地做到这一点?

4

0 回答 0