![未找到 /usr/local/lib 中的某些共享库,但它们位于 /usr/lib 中](https://linux22.com/image/54740/%E6%9C%AA%E6%89%BE%E5%88%B0%20%2Fusr%2Flocal%2Flib%20%E4%B8%AD%E7%9A%84%E6%9F%90%E4%BA%9B%E5%85%B1%E4%BA%AB%E5%BA%93%EF%BC%8C%E4%BD%86%E5%AE%83%E4%BB%AC%E4%BD%8D%E4%BA%8E%20%2Fusr%2Flib%20%E4%B8%AD.png)
我可以使用 /usr/lib 中的符号链接共享库成功运行可执行文件,如下所示 -
sudo ln -s /lib/i386-linux-gnu/libcrypto.so.0.9.8 /usr/lib/libcrypto.so.4
为了使其更易于维护,我想将其移至 /usr/local/lib -
sudo ln -s /lib/i386-linux-gnu/libcrypto.so.0.9.8 /usr/local/lib/libcrypto.so.4
但我的系统似乎忽略了这个特定的符号链接。 /usr/local/lib 位于相关 ld.so.conf 设置中,并且确实包含在ldconfig -v
.
/usr/local/lib:
libcrypto.so.0.9.8 -> libcrypto.so.4
到目前为止我唯一的线索是 ldconfig 创建了一个附加的符号链接回到实际的文件名......
/usr/local/lib $ ls -l *so*
lrwxrwxrwx 1 root root 14 Aug 26 22:53 libcrypto.so.0.9.8 -> libcrypto.so.4
lrwxrwxrwx 1 root root 38 Aug 26 22:36 libcrypto.so.4 -> /lib/i386-linux-gnu/libcrypto.so.0.9.8
lrwxrwxrwx 1 root root 49 Aug 26 22:36 libiniparser.so.0 -> /usr/lib/x86_64-linux-gnu/samba/libiniparser.so.0
例如,在上面的输出中,lib 和 libiniparser.so.0 的链接无论包含在 /usr/lib 还是 /usr/local/lib 中都可以正常工作。最简单的解释是 ldconfig 专门避免了切换库文件名的条目,但该理论并没有解释为什么它在 /usr/lib 中起作用。
任何见解将不胜感激,谢谢。
答案1
您可以通过将另一个配置文件添加到 /etc/ld.so.conf.d 来添加更多路径,其中包含新位置的目录路径,然后重建缓存或重新启动。或者您可以使用 /sbin/ldconfig 命令并以这种方式进行操作。