我正在计算机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/