Общая библиотека - как навсегда установить путь

Я использую программу, которая имеет общую библиотеку, которая обычно устанавливается в /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).

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