This question already has an answer here:

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?

share|improve this question

marked as duplicate by Eliah Kagan, Eric Carvalho, Zanna, TheWanderer, j0h Jan 4 '17 at 2:46

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

up vote 2 down vote accepted

/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"
share|improve this answer
6  
I upvoted, but actually it seems like running ldconfig as root is the "right" way to do this: askubuntu.com/a/350076/221408 – j_random_hacker Apr 21 '15 at 14:47
    
    
I 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 type sudo ldconfig. – jma Nov 16 '17 at 12:42

Not the answer you're looking for? Browse other questions tagged or ask your own question.