运行时:
sudo /sbin/ldconfig
出现如下错误:
/sbin/ldconfig: /usr/local/lib/ is not a symbolic link
当我运行 file
命令时,会出现以下内容:
file /usr/local/lib/
/usr/local/lib/: directory
在 /usr/local/lib/
中,我使用了三个库。我在这里将它们称为 lib1
、lib2
和 lib3
。
现在,当我对我的二进制文件执行 ldd
时,结果:
lib1.so => not found
lib2.so => not found
lib3.so => /usr/local/lib/lib3.so (0x00216000)
但它们都与 /usr/local/lib/{lib1,lib2,lib3}.so
位于同一文件夹中。
每次运行ldconfig
,都会出现同样的错误:
/usr/local/lib/ is not a symbolic link
我认为 /usr/local/lib
应该在 /etc/ld.conf.d/*.conf
中声明两次,但不是:
sudo egrep '\/usr\/local' /etc/ld.so.conf.d/*
projectA.conf.old:/usr/local/projectA/lib
local.conf:/usr/local/lib
ld.so.conf
只包含/etc/ld.so.conf.d/*.conf
,所以这个*.old
没有被处理,它引用 /usr/local/projectA/lib
.
经过一段时间的尝试,我删除了所有 lib1 和 lib2(有时我在二进制文件夹中对其进行了测试),出现了同样的错误。
最佳答案
我在使用 Oracle 11R2 客户端时遇到了这个问题。不确定 Oracle 安装程序是这样做的,还是在我到达之前有人这样做。不是 64 位 vs 32 位,都是 64 位。
错误是 libexpat.so.1
不是符号链接(symbolic link)。
原来有两个完全相同的文件,libexpat.so.1.5.2
和libexpat.so.1
。删除有问题的文件并使其成为 1.5.2 版本的符号链接(symbolic link)会导致错误消失。
您希望知名名称成为当前版本的符号链接(symbolic link)是有道理的。如果你这样做,你最终得到一个陈旧的库的可能性就会降低。
关于linux - 使用 Linux 加载程序时 ldconfig 错误 :"is not a symbolic link",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11542255/