When running:
sudo /sbin/ldconfig
the following error appears:
/sbin/ldconfig: /usr/local/lib/ is not a symbolic link
When I run file:
file /usr/local/lib/
/usr/local/lib/: directory
Inside /usr/local/lib/
there are three libraries that I use. I'll call them here as lib1
, lib2
and lib3
.
Now, when I do an ldd
on my binary it results:
lib1.so => not found
lib2.so => not found
lib3.so => /usr/local/lib/lib3.so (0x00216000)
But all of then are in the same folder as /usr/local/lib/{lib1,lib2,lib3}.so
.
Every time I run ldconfig
, the same error appears:
/usr/local/lib/ is not a symbolic link
I thought /usr/local/lib
should be declared twice in /etc/ld.conf.d/*.conf
, but not:
sudo egrep '\/usr\/local' /etc/ld.so.conf.d/*
projectA.conf.old:/usr/local/projectA/lib
local.conf:/usr/local/lib
ld.so.conf
only includes /etc/ld.so.conf.d/*.conf
, so this *.old
isn't processed, and it refers to /usr/local/projectA/lib
.
After a time tring I deleted all lib1 and lib2 (at some point I tested it on binary's folder), the same error occurs.
Solved, at least at the point of the question.
I searched in the web before asking, an there were no conclusive solution, the reason why this error is: lib1.so and lib2.so are not OK, very probably where not compiled for a 64 PC, but for a 32 bits machine otherwise lib3.so is a 64 bits lib. At least that is my hipothesis.
VERY unfortunately ldconfig doesn't give a clean error message informing that it could not load the library, it only pumps:
ldconfig: /folder_where_the_wicked_lib_is/ is not a symbolic link
I solved this when I removed the libs not found by ldd over the binary. Now it's easier that I know where lies the problem.
My ld version: GNU ld version 2.20.51, and I don't know if a most recent version has a better message for its users.
Thanks.
You need to include the path of the libraries inside /etc/ld.so.conf, and rerun ldconfig to upate the list
Other possibility is to include in the env variable LD_LIBRARY_PATH the path to your library, and rerun the executable.
check the symbolic links if they point to a valid library ...
You can add the path directly in /etc/ld.so.conf, without include...
run ldconfig -p
to see whether your library is well included in the cache.
I simply ran the command below:
export LD_LIBRARY_PATH=/usr/lib/
Now it is working fine.
I have also faced the same issue, The solution for it is : the file for which you are getting the error is probably a duplicated file of the actual file with another version. So just the removal of a particular file on which errors are thrown can resolve the issue.
simple run in shell : sudo apt-get install --reinstall libexpat1
got same problem with libxcb - solved in this way - very fast :)
Source: Stackoverflow.com