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