2016-12-10 4 views
0

Я знаю, что обычно linux ищет динамические библиотеки в определенных папках в системе, например /lib, /usr/lib/, /usr/local/lib. И если не найдена разделяемая библиотека, которая нужна исполняемой программе, тогда она покажет ошибку.Почему Linux не ищет общие библиотеки в той же папке

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

Разве это не так просто реализовать? или я чего-то не хватает ??

ответ

1

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

  • связь с -Wl,-rpath -Wl,'$ORIGIN'
  • не называют ваше приложение напрямую, а через скрипт обертку, который будет установлен надлежащий LD_LIBRARY_PATH и затем запустите приложение
1

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

Вы можете найти более here:

+0

Я слышал о переменной окружения LD_LIBRARY_PATH. Но в этом случае мне нужно экспортировать путь к этой переменной на каждом компьютере. Я не могу отправить программу с разделяемой библиотекой пользователю и запустить ее напрямую, просто нажав на исполняемый файл. – Sidahmed

+0

В этом случае вам может потребоваться отправить устанавливаемый пакет на основе целевого Linux-вкуса. Это позволит настроить правильную среду для исполняемого файла. Имхо стоит усилий –

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