【发布时间】:2013-11-28 16:34:01
【问题描述】:
几个月前,我在一个 debian 上构建了一个使用 libxml2 作为共享库的 C 软件。 我创建了一个 .deb 文件来安装软件,Ubuntu 用户可以让它运行。
今天,最新版本的 Ubuntu 拥有更高版本的 libxml2。所以现在,该软件无法运行,它要求使用以前版本的 libxml2,而使其工作的唯一方法是在链接新版本的 libxml2 时构建软件。
所以我的问题是,是否可以在不需要特定版本的情况下链接到共享库(冒着软件无法在某些版本上运行的风险)?
如果不是,那么如果您无法在任何 Linux 发行版上部署您的软件,那么链接到共享库的真正优势是什么?
感谢您的帮助。
最好的问候, 文森特。
【问题讨论】:
-
正如已经评论过的,下面的(接受的)答案没有回答这个问题。我认为根本问题确实是:如何覆盖二进制文件中记录的 SONAME,使其不包含主编号 - “libxml2.so”而不是“libxml2.so.2”。我不知道它是否有效,因为图书馆有一个带有主号码的 SONAME ...
标签: c linker shared-libraries shared