我是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帖子,内容为:



我正在测试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/

10-09 05:57