4

./a.out: error while loading shared libraries: libc++.so.1: cannot open shared object file: No such file or directory

even though:

$ echo $LD_LIBRARY_PATH
/home/exe/libcxx/lib:/home/exe/llvm/lib:/usr/local/lib
$ ls /usr/local/lib
libc++.so  libc++.so.1  libc++.so.1.0  python2.7  python3.2

I even copied it next to the executable, still no effect.

What am I doing wrong?

nlognfan
  • 43
  • 1
  • 3

2 Answers2

7

You might need to run sudo ldconfig /usr/local/lib to update the dynamic linker cache. Otherwise I think the system doesn't know which libraries are available from that directory. See man ldconfig for more info.

Paul
  • 6,808
  • 3
  • 23
  • 29
  • It works. Do I have to repeat it after every reboot? – nlognfan Jun 01 '13 at 16:55
  • 1
    No, it should update `/etc/ld.so.cache` permanently. You should only need to re-run if you add or remove libraries in that directory again (normally `apt-get` handles this step for you for packaged libraries under `/usr`). – Paul Jun 01 '13 at 16:57
0

The correct answer turns out to be that you should do export LD_LIBRARY_PATH = .. See https://stackoverflow.com/questions/1158091/defining-a-variable-with-or-without-export

Rick
  • 180
  • 10