Для этого вопроса я буду использовать конкретный пример, но на самом деле это обобщает практически любой бинарный файл в linux, который не может найти свои зависимые библиотеки. Итак, у меня есть программа, которая не запускается из-за отсутствия библиотек:
./cart5: error while loading shared libraries: libcorona-1.0.2.so: cannot open shared object file: No such file or directory
ldd проливает свет на проблему:
linux-vdso.so.1 => (0x00007fff18b01000)
libcorona-1.0.2.so => not found
libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.4.3/libstdc++.so.6 (0x00007f0975830000)
libm.so.6 => /lib/libm.so.6 (0x00007f09755af000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007f0975399000)
libc.so.6 => /lib/libc.so.6 (0x00007f0975040000)
libz.so.1 => /lib/libz.so.1 (0x00007f0974e2b000)
/lib64/ld-linux-x86-64.so.2 (0x00007f0975b36000)
Однако корона установлена:
oliver@human$ find / -name libcorona-1.0.2.so 2> /dev/null
/usr/local/lib64/libcorona-1.0.2.so
/home/oliver/installed/corona-1.0.2/src/.libs/libcorona-1.0.2.so
Как мне указать двоичному файлу, где искать «недостающую» библиотеку?
Если вы хотите избежать LD_LIBRARY_PATH, вы также можете сделать это во время ссылки:
-Wl, ... используется для передачи дополнительных команд компоновщику, и в этом случае с -R вы указываете компоновщику сохранить этот путь как «путь поиска по умолчанию» для .so.
Я держу заметки о многих маленьких советах, подобных этому, на моем сайте:
https://www.thanassis.space/tricks.html
источник
/opt/mypackage/bin/someBinary
, вам понадобятся библиотеки, в которых вы храните/opt/mypackage/lib/
. Практически все проприетарные SW, установленные в / opt, следуют этому правилу - это означает, что описанный выше способ будет охватывать все такие установки. Затем они обычно добавляют также символическую ссылку в / usr / bin, которая указывает на двоичный файл в / opt - зная, что «путь поиска по умолчанию» найдет.so
файлы в соответствующей/opt/.../lib
папке.Это указывает, что libcorona не установлен по правильному пути. Переместите каталог libcorona по правильному пути, проблема будет решена.
источник