RPATH-Reihenfolge in QMake einstellen

Ich habe ein Linux Qt-Programm. Ich möchte, dass es bevorzugt die (dynamischen) Qt-Bibliotheken im Verzeichnis der ausführbaren Datei verwendet, falls vorhanden, andernfalls die Qt-Bibliotheken des Systems. RPATH zur Rettung.

Ich füge diese Zeile dem @ hin qmakero-Datei von @:

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

und schauen Sie sich die resultierende ausführbare Datei mit @ readelf Aha

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]

Scheint richtig, aber ldd zeigt, dass die Systemversion verwendet wird:

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

Wenn ich das resultierende Makefile von qmake manuell bearbeite, um die Reihenfolge der beiden Pfade zu vertauschen, sodass $ ORIGIN nach / usr / local / ... folgt, erhalte ich das richtige Verhalten:

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)

Mein Problem ist mit wie qmake erstellt die endgültige LFLAGS-Variable. Ich kann nicht herausfinden, wie ich meinen Zusatz ($ ORIGIN) nach der Systembibliothek einfügen soll. Irgendwelche Ideen

Antworten auf die Frage(8)

Ihre Antwort auf die Frage