У меня есть эти файлы общей библиотеки в / usr / local / lib:
libopenbabel.so
libopenbabel.so.4
libopenbabel.so.4.0.2
libopenbabel.so — это ссылка на libopenbabel.so.4, а libopenbabel.so.4 — это ссылка на libopenbabel.so.4.0.2
когда я компилирую свой файл с этой командой:
g++ test.cpp -L/usr/local/lib -lopenbabel
и затем попробуйте запустить a.out, я получаю эту ошибку:
./a.out: error while loading shared libraries: libopenbabel.so.4: cannot open shared object file: No such file or directory
Подразумевается, что компилятор находит libopenbabel.so, но сталкивается с ошибкой при переходе по той ссылке на libopenbabel.so.4, которая находится в том же каталоге. Любые идеи о том, почему это происходит / как я могу это исправить?
Вывод ls -l в / usr / local / lib:
total 33772
drwxr-xr-x 7 root root 4096 Mar 22 01:24 .
drwxr-xr-x 10 root root 4096 Aug 20 2013 ..
drwxr-xr-x 3 root root 4096 Mar 21 23:45 cmake
lrwxrwxrwx 1 root root 13 Mar 21 23:45 libinchi.so -> libinchi.so.0
lrwxrwxrwx 1 root root 17 Mar 21 23:45 libinchi.so.0 -> libinchi.so.0.4.1
-rw-r--r-- 1 root root 3315565 Mar 22 01:04 libinchi.so.0.4.1
lrwxrwxrwx 1 root root 17 Mar 21 23:45 libopenbabel.so -> libopenbabel.so.4
lrwxrwxrwx 1 root root 21 Mar 21 23:45 libopenbabel.so.4 -> libopenbabel.so.4.0.2
-rw-r--r-- 1 root root 31232420 Mar 22 01:04 libopenbabel.so.4.0.2
drwxr-xr-x 3 root root 4096 Mar 21 23:45 openbabel
drwxr-xr-x 2 root root 4096 Mar 22 01:24 pkgconfig
drwxrwsr-x 4 root staff 4096 Mar 3 12:57 python2.7
drwxrwsr-x 3 root staff 4096 Dec 22 18:25 python3.2
Либо установите свой LD_LIBRARY_PATH
переменная окружения, чтобы содержать /usr/local/lib
или добавить /usr/local/lib
в /etc/ld.so.conf
и беги ldconfig
как корень.
Также беги ldd a.out
чтобы убедиться, что динамическое связывание хорошо работает в вашем приложении.
Читать LD-Linux (8), LDCONFIG (8), LDD (1)
Других решений пока нет …