Why can't my program find the libraries in "/usr/local/lib"? [duplicate]

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?


/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"