Общая библиотека - как навсегда установить путь
Я использую программу, которая имеет общую библиотеку, которая обычно устанавливается в /usr/lib
,
Однако по какой-то причине я должен иметь эти библиотеки локально. Поэтому для запуска моей программы (которая зависит от первой) мне нужно export LD_LIBRARY_PATH= ...
или добавить мой локальный путь навсегда. Это нормально для меня, но пользователи моего программного обеспечения не знают об этом, и для них это слишком сложно. Итак, мой вопрос: есть ли способ автоматически установить локальный путь к моим разделяемым библиотекам, которые вызываются моей программой во время выполнения.
1 ответ
Есть ли способ автоматически установить локальный путь к моим общим библиотекам
Может быть.
Если вы работаете в Linux, и ваше приложение установлено вместе с общей библиотекой в /some/prefix/bin/app
а также /some/prefix/lib/libsharedlib.so
затем связать ваше приложение с:
gcc -o app -Wl,--rpath='$ORIGIN/../lib' main.o ... -lsharedlib
достигнет именно того результата, который вы хотите (примечание: вы можете переместить и приложение, и библиотеку в /another/dir
и он все еще будет работать до тех пор, пока оба lib
а также bin
каталоги перемещаются вместе).
Примечание: одинарные кавычки $ORIGIN
являются обязательными.
Если вы находитесь на платформе, которая не поддерживает $ORIGIN
Другой распространенный метод заключается в том, чтобы обернуть приложение в сценарий оболочки, который смотрит на $0
, устанавливает LD_LIBRARY_PATH
соответственно, затем исполняет реальное приложение (которое часто называется app.bin
, или же app.exe
).