ldconfig错误:不是一个符号链接

运行时:

sudo /sbin/ldconfig 

出现以下错误:

  /sbin/ldconfig: /usr/local/lib/ is not a symbolic link 

当我运行文件:

  file /usr/local/lib/ /usr/local/lib/: directory 

/usr/local/lib/里面有三个我使用的库。 我将在这里称为lib1lib2lib3

现在,当我在我的二进制文件上执行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(在某些时候我testing了它的二进制文件夹),同样的错误发生。

Solutions Collecting From Web of "ldconfig错误:不是一个符号链接"

我遇到了Oracle 11R2客户端的这个问题。 不知道是否Oracle安装程序做到了这一点,或者在我到达之前有人在这里做了。 这不是64位和32位,都是64位。

错误是libexpat.so.1不是一个符号链接。

原来有两个相同的文件, libexpat.so.1.5.2libexpat.so.1 。 删除有问题的文件并将其与1.5.2版本的符号链接导致错误消失。

有意义的是,你希望知名的名字是当前版本的符号链接。 如果你这样做,那么你最终会得到一个陈旧的图书馆是不太可能的。

解决,至少在问题的关键点。

我在网上搜索之前询问,没有确凿的解决方案,这个错误的原因是:lib1.so和lib2.so不是很好,很可能在那里没有编译为64个人电脑,但是一个32位机器,否则lib3.so是一个64位的库。 至少那是我的hipothesis。

非常不幸的是,ldconfig并没有给出一个干净的错误消息,通知它无法加载库,它只泵:

ldconfig:/ folder_where_the_wicked_lib_is /不是一个符号链接

我解决了这个问题时,我删除了二进制文件找不到ldd的库。 现在我更容易知道问题出在哪里。

我的ld版本:GNU ld版本2.20.51,我不知道最新版本是否对用户有更好的信息。

谢谢。

您需要在/etc/ld.so.conf中包含这些库的路径,然后重新运行ldconfig以更新列表

其他可能性是在env变量LD_LIBRARY_PATH中包含您的库的路径,并重新运行可执行文件。

检查符号链接,如果他们指向一个有效的库…

您可以直接在/etc/ld.so.conf中添加路径,不包括…

运行ldconfig -p查看你的库是否包含在缓存中。

我只是运行下面的命令:

 export LD_LIBRARY_PATH=/usr/lib/ 

现在它工作正常。