gpt4 book ai didi

c++ - 在 Linux 上分发软件时依赖库?

转载 作者:太空宇宙 更新时间:2023-11-04 10:16:50 26 4
gpt4 key购买 nike

我正在尝试为一款 Qt 软件制作一个 Linux 版本,但我是一个毫 headless 绪的 Linux 新手。我已经使用静态链接的 Qt 库构建了我的应用程序,并制作了 .deb 和 .rpm 包,但是当我测试它们时,我收到有关某些发行版中缺少库的警告。例如,我的 .deb 版本在 Debian 和 Ubuntu 上运行良好,但由于缺少库而无法在 Linux Mint KDE 上启动。运行 ldd 我发现缺少四个库:

libpng16.so.16 => not found
libicui18n.so.57 => not found
libicuuc.so.57 => not found
libicudata.so.57 => not found

显然,我需要以某种方式确保所有必需的库都存在,但是所需的库列表似乎有所不同。例如,Linux Mint Cinnamon 列出了 33 个库,而 Ubuntu Unity 列出了 34 个(libpng12.so.0 是额外的一个)。我还假设其中一些库是所有发行版都附带的标准 Linux 库,因此我不需要包含它们。

我真的不知道我在做什么,所以有几个问题:

确定我需要包含在我的 .deb 和 .rpm 包中的库列表的最佳方法是什么?如果 ldd 是最佳选择,我是否需要包括所有列出的库,或者是否有一些库作为标准与所有 Debian/rpm 发行版捆绑在一起?

包含这些库的最佳方式是什么?您是将它们包含在包中还是在依赖列表中指定它们?

任何其他一般性建议将不胜感激,因为我不确定我是否以正确的方式进行此操作。

谢谢。

最佳答案

不要考虑依赖;考虑依赖关系。

当您创建 (deb, rpm) 包时,您可以列出它所依赖的其他包。找出哪个包中包含您想要的库,并将该包添加为依赖项。

然后,当用户安装你的包时,如果需要,他们的包管理器也会安装它所依赖的包。 Presto:您拥有所需的库。

关于c++ - 在 Linux 上分发软件时依赖库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45755211/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com