未找到 /usr/local/lib 中的某些共享库,但它们位于 /usr/lib 中

未找到 /usr/local/lib 中的某些共享库,但它们位于 /usr/lib 中

我可以使用 /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 命令并以这种方式进行操作。

相关内容