我正在计算机libtiff.so -> libtiff.so.5上构建程序。
然后将构建推送到另一台机器上libtiff.so -> libtiff.so.4

在运行时,我的程序存在:«加载共享库时出错:libtiff.so.5:无法打开共享库文件:没有这样的文件或目录»。

我无法升级另一台计算机,并且我想避免在虚拟机上进行编译(与执行计算机具有相同的linux版本)。因此,我想强制编译器使用libtiff.so.4而不是libtiff.so.5

我的计算机上已经安装了libtiff.so.4(以及libtiff.so.5)。如何强制使用此版本而不是较新版本进行链接。我曾考虑过移动libtiff.so -> libtiff.so.4,但是如果它需要最新版本,恐怕会破坏我的系统(apt-get purge libtiff5给出了错误,因为其他软件包需要它)。

是否可以链接到旧版本(已安装)的库?如果是,怎么办?
libtiff.so的符号链接(symbolic link)更改为旧版本是否有害?如果没有,它将解决我的问题吗?

最佳答案

您可以使用以下语法链接到特定版本的库:

gcc [其他选项] -l:libtiff.so.4

您无需指定路径;搜索通常的目录以找到该库。

注意:正如Michael Wild所提到的,您应该安装该版本的头文件,而不要安装最新的头文件。

关于c++ - 如何链接到共享库的旧版本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21017406/

10-11 16:02