错误LDCONFIG:不是一个符号链接(ldconfig error: is not a symbo

2019-07-30 11:48发布

当运行:

    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(在某些时候我测试的二进制文件的文件夹),发生同样的错误。

Answer 1:

我就遇到了这个问题与Oracle 11R2客户端。 不知道,如果Oracle安装这样做或者别的人在这里我到达之前。 这不是64位的VS 32位,所有为64位。

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

原来,有两个相同的文件, libexpat.so.1.5.2libexpat.so.1 。 删除有问题的文件,并使其成为一个符号链接到1.5.2版本造成的错误离开。

让你会希望知名的名字是一个符号链接到当前版本的感觉。 如果你这样做,这是不太可能,你会用一个陈旧的图书馆告终。



Answer 2:

解决了,至少在问题的要点。

我搜索的网页前问,一个有没有确凿的解决方案,为什么这个错误的原因是:lib1.so和lib2.so没有确定,很有可能在那里不编译用于64 PC,但对于一个32位的机器,否则lib3.so是一个64个库。 至少这是我的hipothesis。

非常遗憾的是LDCONFIG不给人干净的错误消息,告知其无法加载库,它只是泵:

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

我解决了这个时候,我删除不LDD在二进制中发现的库。 现在,它更容易,我知道这就是问题所在。

我LD版本:GNU LD版51年2月20日,我不知道,如果一个最新的版本有它的用户带来更好的消息。

谢谢。



Answer 3:

您需要包括内部/etc/ld.so.conf中库的路径,并重新运行ldconfig来upate列表

另一种可能是在环境变量LD_LIBRARY_PATH以包含路径到媒体库,并重新运行可执行文件。

检查符号链接是否指向一个有效的库...

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

运行ldconfig -p ,以查看图书馆是否也包含在缓存中。



Answer 4:

我只是跑下面的命令:

export LD_LIBRARY_PATH=/usr/lib/

现在,它工作正常。



文章来源: ldconfig error: is not a symbolic link