gpt4 book ai didi

c++ - 解决 Linux 库依赖关系?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:19:20 24 4
gpt4 key购买 nike

我是 Linux 新手,但我正在尝试分发 .deb 和 .rpm 格式的应用程序。我在使用以下三个 libicu 库时遇到问题:

libicui18n.so.52.1 => not found
libicuuc.so.52.1 => not found
libicudata.so.52.1 => not found

问题是应用程序所需的版本并不总是与系统上安装的版本相匹配,例如 Fedora 26 附带 libicu 57.1,而我的应用程序正在寻找 52.1。将 libicu 添加到包依赖列表中没有帮助,因为 libicu 已经安装,所以安装 libicu 只是给出:

Package libicu-57.1-6.fc26.x86_64 is already installed, skipping.
Dependencies resolved.
Nothing to do.
Complete!

我找不到 libicu52.1 的包,但尝试安装旧包似乎无论如何都行不通。我试过 libicu-54.1-4.fc22.x86_64 但它说没有可用的包,大概是因为它只在 Fedora 22 上可用。

我曾考虑将库包含在应用程序包中并将它们安装到/usr/lib64,但作为 Linux 新手,我不确定这是否可以接受。

解决这个问题的最佳方法是什么?

编辑:我看到了 this在相关部分发帖说:

Newer versions of libraries should not break existing apps unless you're using deprecated features.

我正在 libicu 57.1 附带的 Fedora 26 上进行测试。我的应用程序只需要 libicu 52.1,所以如果上述情况属实,我认为它应该可以工作。我需要做些什么才能让它发挥作用吗?

最佳答案

让你的包安装“额外”版本的libicu/usr/lib64 对大多数用户来说是非常惊讶的。不要那样做。

此处的标准做法是为每个目标平台构建不同的 .deb 和 .rpm 文件。就像您需要分别为 32 位和 64 位构建一样,您需要分别为 CentOS 6 和 7 构建。您可以通过运行一组虚拟机来执行发布构建来做到这一点——每个虚拟机一个您要支持的目标平台。

如果您确实需要制作可在多个平台上运行的单个 .deb 或 .rpm,一种方法是消除某些依赖项。在这种情况下,所有这些库都是同一项目 (ICU) 的一部分,因此如果您真的不需要依赖该项目,请不要依赖。

关于c++ - 解决 Linux 库依赖关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45803874/

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