У меня есть исполняемый файл, связанный следующим образом:
$ ldd a.out
libboost_system-mt.so.1.47.0 => /usr/lib64/libboost_system-mt.so.1.47.0 (0x00007f4881f56000)
libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f4881cfb000)
libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007f4881965000)
librt.so.1 => /lib64/librt.so.1 (0x00007f488175d000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4881540000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f4881239000)
.
.
Где библиотеки libcrypto и libssl являются библиотеками openssl 1.0.0-fips. Я хочу поэкспериментировать с библиотеками 1.0.1, поэтому я собрал их в своем домашнем каталоге. Есть ли способ получить a.out
ссылку на мои новые библиотеки openssl без особых усилий? Я хотел бы избежать
- Необходимость перекомпоновки
a.out
(потому что инструменты сборки очень сложны) - Изменение любых глобальных настроек (потому что другие разработчики работают на этой машине)
Можно ли сделать то, что я надеюсь здесь?
Напишите скрипт-обертку, который устанавливает
LD_LIBRARY_PATH
переменную среды. Это подвескаPATH
для общих библиотек. Системный путь поиска всегда ищется после каталогов, перечисленных в$LD_LIBRARY_PATH
. См. Руководство по динамическому компоновщику для справки.Или, для разового, прямо в командной строке:
В качестве альтернативы, если вы хотите изменить двоичный файл, попробуйте chrpath , который позволяет редактировать путь поиска библиотеки, запеченный в исполняемом файле.
источник
chrpath
. Именно то, что мне было нужно.