在 Fedora x64 上,无法加载存在于 /usr/local/lib 中的共享库。

11

在尝试运行一个我刚编译成功的程序时,我遇到了以下错误:

./src/sensors/laser_scan_producer: error while loading shared libraries: liblcm.so.1: cannot open shared object file: No such file or directory

ls /usr/local/lib/liblcm*输出如下:

/usr/local/lib/liblcm.la  
/usr/local/lib/liblcm.so  
/usr/local/lib/liblcm.so.1  
/usr/local/lib/liblcm.so.1.2.0
我已经执行了几次sudo ldconfig并将/usr/local/lib添加到LD_LIBRARY_PATH以实现冗余。
这是我在stackOverflow上搜索过程中看到的答案列表的尽头。
有人发现问题了吗?

链接器是否在 /usr/local/lib64/ 中查找? - Chris Hutchinson
5
ldconfig 使用文件 /etc/ld.so.conf。您可以将 /usr/local/lib 添加到该文件中,重新运行 ldconfig 并再次尝试。 - Some programmer dude
2个回答

17
感谢@Joachim_Pileborg的帮助:

ldconfig使用文件/etc/ld.so.conf。您可以在该文件中添加/usr/local/lib,重新运行ldconfig并再次尝试。

这样做解决了问题,尽管我觉得奇怪的是,在自然情况下应该已经检查了/usr/local/lib。


1
ldconfig使用目录中文件的缓存,因此仅将文件添加到目录中是不够的。您必须运行“sudo ldconfig”以更新缓存。 - FuriousGeorge
只需运行 sudo ldconfig 即可。不管是这个特定的软件包还是 aptitude 本身的原因,apt install 似乎没有正确安装该软件包,因此即使我可以链接它,也无法运行我的程序。运行 ldconfig 后,它就神奇地开始正确运行了。 - Qix - MONICA WAS MISTREATED

2
我找到了一个适用于/usr/local/lib和/usr/local/lib64目录的解决方案,在这个提交中。首先以root身份运行此命令以添加这些目录。原始答案被翻译为“最初的回答”。
tee /etc/ld.so.conf.d/local.conf <<EOF
/usr/local/lib
/usr/local/lib64
EOF

接下来以root身份运行:

ldconfig

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接