Установка порядка RPATH в QMake

У меня есть программа Linux Qt. Я хотел бы, чтобы он предпочтительно использовал (динамические) библиотеки Qt в каталоге исполняемого файла, если они существуют, в противном случае используйте системные библиотеки Qt. RPATH на помощь.

Я добавляю эту строку вQMAKE.pro файл:

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

и глядя на полученный исполняемый файл сreadelf Я вижу:

0x000000000000000f (RPATH)              Library rpath: [$ORIGIN:/usr/local/Trolltech/Qt-5.2.0/lib]
0x000000000000001d (RUNPATH)            Library runpath: [$ORIGIN:/usr/local/Trolltech/Qt-5.2.0/lib]

Кажется правильным, ноLDD показывает, что он использует версию системы:

libQt5Core.so.5 => /usr/local/Trolltech/Qt-5.2.0/lib/libQt5Core.so.5 (0x00007f2d2fe09000)

Если я вручную отредактирую результирующий Makefile qmake, чтобы поменять местами порядок двух rpath, так что $ ORIGIN следует после / usr / local / ..., я получу правильное поведение:

0x000000000000000f (RPATH)              Library rpath: [/usr/local/Trolltech/Qt-5.2.0/lib:$ORIGIN]
0x000000000000001d (RUNPATH)            Library runpath: [/usr/local/Trolltech/Qt-5.2.0/lib:$ORIGIN]

libQt5Core.so.5 => ./libQt5Core.so.5 (0x00007fb92aba9000)

Моя проблема в том, какQMAKE создает окончательную переменную LFLAGS. Я не могу понять, как заставить это добавить мое дополнение ($ ORIGIN) после системной библиотеки. Есть идеи?

Ответы на вопрос(4)

Ваш ответ на вопрос