RPATH в .pro-файле не работает

Я пытаюсь добавить $ORIGIN в переменную rpath моей программы.

Я добавил следующую строку в мой .pro-файл:

unix: QMAKE_RPATHDIR += \$$ORIGIN

И проверил, что команда действительно добавлена, проверив выходные данные компиляции. Вызов g ++, который генерирует qmake, выглядит так:

g++ -Wl,-rpath,/home/sky/Qt/5.5/gcc_64 -Wl,-rpath,$ORIGIN -Wl...

Как видите, добавлено origin (вместе с некоторыми другими значениями). Однако, если я проверю значение rpath с помощью readelf, originis нет в списке. Вместо этого он показывает «пустую» запись (всего две двоеточия), кроме записей, добавленных qmake:

 0x000000000000000f (RPATH)              Bibliothek rpath: [/home/sky/Qt/5.5/gcc_64::/home/sky/Qt/5.5/gcc_64/lib]

Что мне здесь не хватает? Спасибо за вашу помощь!

2

Решение

Это здесь «qmake and rpath»:

Вы должны использовать функцию $ ORIGIN компоновщика времени выполнения.
К сожалению, из-за некоторого блестящего предвидения разработчиков загрузчика,
они использовали «$» в качестве префикса, что делает его королевской болью в заднице
пройти вокруг. Невозможно использовать его в QMAKE_RPATHDIR. Вы должны
вместо этого используйте:

QMAKE_LFLAGS += '-Wl,-rpath,\'\$$ORIGIN\''

так что он сохраняется как в файле проекта, так и в файле Makefile.


В вашей командной строке он идет в оболочку как -Wl,-rpath,$ORIGIN а также $ORIGIN расширен, поскольку знак доллара интерпретируется оболочкой. Это должно быть указано. Пример такой цитаты также приведен в LD.SO (8) справочная страница: gcc -Wl,-rpath,'$ORIGIN/../lib',

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]