Как эта программа статически связывается с .so в пути не по умолчанию

Программа, которую я использую, может только быть установлена с пользовательским установщиком (Бесплатно распространяемая Демонстрация IDA). Я установил его в своем домашнем dir, все это хорошо работает.

Теперь я заметил при проверке программы с ldd: это поставлется со своими собственными библиотеками Qt, который является местами как совместно использованными библиотеками в его dir установки (так тот же каталог, его основной исполняемый файл находится в, не/usr/lib или подобный).

$ ldd ida64
    linux-vdso.so.1 =>  (0x00007ffec5fb9000)
    libida64.so => /home/asdf/idafree-7.0/./libida64.so 
    libQt5PrintSupport.so.5 => /home/asdf/idafree-7.0/./libQt5PrintSupport.so.5
    libQt5Widgets.so.5 => /home/asdf/idafree-7.0/./libQt5Widgets.so.5 
....

(установите dir =/home/asdf/idafree-7.0/),

Теперь интересно: Как это делает это? Я выполняю программу непосредственно без любого волшебства LD_LIB_PATH.

0
задан 13 May 2018 в 12:44

1 ответ

Простое объяснение, как выполнить исполняемый файл, требующий уникального LD_LIBRARY_PATH, например, пути к, освобождает в текущем каталоге/:

Короткий: export LD_LIBRARY_PATH=. где точка (.) означает 'текущий каталог'

Обычно также системный LD_LIBRARY_PATH будет (иметь к) быть включенным: export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH

"Трудно кодирование", например. ida64 : Функция в исполняемом файле, который будет выполнен сначала, устанавливает уникальный LD_LIBRARY_PATH.... Другой пример: firefox .

0
ответ дан 29 October 2019 в 08:29

Другие вопросы по тегам:

Похожие вопросы: