我得到了一个要执行的二进制文件,但运行ldd ./name_of_binary
时却
libABC.so.1 => not found
(我用“libABC”替换了库名,因为我想要一个通用的答案)
我有libABC.so.2
。我该如何获取libABC.so.1
?或者答案是否针对每个库都是特定的?
答案1
在紧急情况下,您可以尝试创建一个符号链接。
ln -s -T /lib/libABC.so.2 ~/libs/libABC.so.1
export LD_LIBRARY_PATH=~/libs/:$LD_LIBRARY_PATH
这很糟糕,因为 API 可能会有所不同,但它可能会暂时起作用(但它最终会崩溃或出现不可预测的行为,也可能是一个安全问题)。
更好的选择是找到 libABC.so.1 的副本(尝试http://packages.ubuntu.com/)。您可以下载旧软件包,并将其安装到非标准目录中(例如 /opt/ 或 ~/libs/):
dpkg -i --instdir=/opt/ ABC-1.deb
然后将该路径添加到您的 LD_LIBRARY_PATH:
export LD_LIBRARY_PATH="/opt/lib/usr/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH"
有可能只需安装到 root 即可(在这种情况下您可以这样做),但可能会与较新的版本发生冲突。并且可能会导致问题。
sudo dpkg -i ABC-1.deb