Why can't my program find the libraries in "/usr/local/lib"?
55,697
/usr/local/lib
is not in the default Ubuntu path. You should add it at the end of the LD_LIBRARY_PATH
environment variable in /etc/environment
. Reboot and the new path will be effective.
You can also set this on a per-user basis in ~/.bashrc
Example (/etc/environment)
LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib
Example (~/.bashrc)
export LD_LIBRARY_PATH="/lib:/usr/lib:/usr/local/lib"
Related videos on Youtube
Comments
-
jtatria over 1 year
I'm on Ubuntu 10.10, and I've just upgraded opencv to 2.4.2.
The problem is that each time I open a new shell and try to compile and run, it compiles but doesn't run due to the following error:
./a.out: error while loading shared libraries: libopencv_calib3d.so.2.4: cannot open shared object file: No such file or directory
As far as I can see, this file is located in /usr/local/lib/!
I can get it to run by running the following beforehand:
export LD_LIBRARY_PATH=/usr/local/lib
How can I fix this issue?
-
Ciro Santilli OurBigBook.com over 7 years
-
-
j_random_hacker about 9 yearsI upvoted, but actually it seems like running
ldconfig
as root is the "right" way to do this: askubuntu.com/a/350076/221408 -
Eliah Kagan over 7 years
-
jma over 6 yearsI downvoted (and upvoted @j_random_hacker's ldconfig response), because
LD_LIBRARY_PATH
is almost always the wrong answer to linker errors and should come with extensive caveats. Just typesudo ldconfig
.