2013-12-19 7 views
1

У меня проблема с общими библиотеками. У меня есть двоичный файл, связанный с некоторыми разделяемыми библиотеками. Я собрал все в C++ с gcc -L dirLibraries ecc ecc -llibraryName1 -libraryName2 ecc Теперь, если я запустил свой двоичный файл, скажите, что он не может найти одну библиотеку, , если я запустил двоичный файл из другого каталога, он скажет мне, что может Не найди другую библиотеку. Что мне нужно сделать, чтобы сообщить моему двоичному файлу, где нужно загружать библиотеки независимо от того места, где я запускаю программу?Скажите библиотеке linux, где загружаются общие библиотеки

ответ

1

Есть две переменные окружения, которые могут помочь:

  1. LD_RUN_PATH используется при строительстве настроить набор локаций для поиска при поиске разделяемых библиотек.
  2. LD_LIBRARY_PATH используется при запуске программы для добавления дополнительных исправлений для поиска разделяемых библиотек.

Как устанавливаются переменные среды, зависит от среды, которую вы используете. Если вы используете оболочку, как bash или ksh вы можете использовать

export LD_LIBRARY_PATH=/some/path:/another/path:/as/many/as/you/need 

После этого, программы началась с этой оболочки наследуют переменную окружения (вы можете также посмотреть на соответствующий документ, например, bash's documentation).

Если вы используете какую-то IDE, вам может потребоваться установить переменные среды из вашего файла ~/.profile.

+0

exaclty вы можете объяснить мне, как и где мне нужно установить переменные envoirment, пожалуйста? – pava91

+0

@ pava91: Я расширил ответ. –

2

Вы можете поместить разделяемые библиотеки, которые хотите загрузить по пути поиска библиотеки, или добавить каталоги, содержащие их, в LD_LIBRARY_PATH. См. Также Shared Libraries, особенно. «Раздел 3.2. Как используются библиотеки» и «Раздел 3.3.1. LD_LIBRARY_PATH».

Смежные вопросы