运行时:
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
我认为在/etc/ld.conf.d/*.conf
中应该声明两次/usr/local/lib
,但实际上不需要:
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(在某个时候我将其测试在二进制文件夹中),但是仍然出现相同的错误。
libcudnn.so.5
,我遇到了相同的问题。它与其他文件完全相同,但会引起ldconfig错误。只需创建符号链接即可解决。您有任何想法为什么会发生这种情况吗? - grisevgcd
到找到该文件的目录,调用ls -a | grep libexpat
,这将显示libexpat.so.1.5.2
和libexpat.so.1
。调用rm libexpat.so.1; ln -s libexpat.so.1.5.2 libexpat.so.1
。您可能需要使用sudo
来执行此操作。 - JakeCowton