Как установить исполняемые файлы для поиска общей библиотеки в ее одном каталоге в компиляции, Я поместил исполняемый файл и связанные с ним библиотеки .so в том же directory, вместо changubg LD_LIBRARY_PATH или /etc/ld.so.conf, Можно ли установить -rpath как переменную, которая является каталогом, где хранится файл executalbe, а переменная не является определенным путем, она может меняться.Как использовать -rpath в компиляции для установки исполняемых файлов для поиска общей библиотеки в том же каталоге
0
A
ответ
1
Можно ли установить -rpath в качестве переменной
Да вы хотите DT_RPATH
быть установлен в $ORIGIN
, например, так:
gcc main.c -Wl,-rpath='$ORIGIN' -lfoo -lbar
Примечание: вам нужно одно- qoute $ORIGIN
, чтобы предотвратить расширение оболочки - RPATH
must содержит знак $
.
Другой вариант заключается в соединении следующим образом:
gcc main.c ./libfoo.so ./libbar.so
Это будет работать только если libfoo.so
и libbar.so
сделать не имеют DT_SONAME
набор, и в целом является низшим решением. Я просто упоминаю его здесь для полноты.