2015-07-14 2 views
0

Я столкнулся с этой проблемой несколько раз.ошибка при загрузке разделяемой библиотеки -> добавить в LD_LIBRARY_PATH?

Выполнение некоторых «программы» результаты в чем-то вроде

error while loading shared libraries: <name of lib>.so: cannot open shared object file: No such file or directory 

Мое решение/обходной путь до сегодняшнего дня является: sudo find/-iname "<name of lib>.so"

тогда Я получить что-то вроде /usr/lib64/<name of lib>.so или даже что-то более конкретное, как /opt/tivoli/tsm/client/api/bin64/<name of lib>.so

Затем я добавляю эти пути (без имени lib) в переменную окружения , и все работает.

Но каков правильный способ обработки таких сообщений об ошибках?

ответ

1

Я думаю, что вы не можете сделать больше. Если библиотечные зависимости отсутствуют, это означает, что эти программы недостаточно хорошо упакованы.

Обычно существует два способа обработки динамических библиотек:

  • создать пакет, который зависит от пакета, содержащего библиотеку
  • включает библиотеку в распределении

Большинство программ в стандартные хранилища используют первый метод, в то время как игры и т. д. обычно используют второй, а затем используют сценарий для запуска программы в локально модифицированной среде, где местный каталог добавляется к LD_LIBRARY_PATH.

Но если ни то, ни другое не сделано, вы должны сделать все необходимое, чтобы получить библиотеку в LD_LIBRARY_PATH. Если вы не хотите загрязнять окружающую среду, вы можете создать сценарий для этой программы:

#!/bin/bash 
export LD_LIBRARY_PATH=<lib_path>:$LD_LIBRARY_PATH 
./<program_name> 
Смежные вопросы