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"
Share:
55,697

Related videos on Youtube

jtatria
Author by

jtatria

recursive: adjective, see recursive.

Updated on September 18, 2022

Comments

  • jtatria
    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?

  • j_random_hacker
    j_random_hacker about 9 years
    I upvoted, but actually it seems like running ldconfig as root is the "right" way to do this: askubuntu.com/a/350076/221408
  • Eliah Kagan
    Eliah Kagan over 7 years
  • jma
    jma over 6 years
    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.