2011-09-21 12 views
14

Vorrei utilizzare l'opzione -rpath linker per impostare il percorso di ricerca .so. Mi piacerebbe cercare [app_path]/../lib. Ho provato aggiungere questo al mio file qmake .pro:

QMAKE_LFLAGS += -Wl,-rpath=$ORIGIN/../lib/ 

Ma qmake link il mio progetto in questo modo:

g++ -Wl,-rpath=RIGIN/../lib/ -Wl,-O1 -o myoutput main.o [...] 

Come posso sfuggire alla $ORIGIN?

risposta

10

Se si desidera $ORIGIN essere (correttamente) ha valutato, mentre la costruzione si può semplicemente aggiungere questo alla tua .pro del file:

QMAKE_RPATHDIR += $ORIGIN/../mylibs 
+0

Interessante. È una nuova opzione? –

+1

L'ho scoperto mentre stavo tentando di eseguire il lavoro di 'QMAKE_RPATH': [QTBUG-8110] (https://bugreports.qt-project.org/browse/QTBUG-8110). Secondo questo link 'QMAKE_RPATH' e' QMAKE_LFLAGS_RPATH' non funzionano più. 'QMAKE_RPATHDIR' funziona per me almeno con Qt 4.8.4 e Qt 4.8.5. – Aurelien

+0

È definito qui: [qmake Riferimento variabile] (http://doc.qt.digia.com/qt/qmake-variable-reference.html#qmake-rpathdir) – Aurelien

21

Ho trovato here un modo per sfuggire correttamente:

QMAKE_LFLAGS += '-Wl,-rpath,\'\$$ORIGIN/../mylibs\'' 
+4

Ho solo pensato di dire che dovevo aggiungere '-z origin' per far funzionare le cose per me. Quindi tutti insieme, questo è 'QMAKE_LFLAGS + = '-Wl, -rpath, \' \ $$ ORIGIN /../ lib \ ', - z, origine''. –

+0

Questa è la risposta corretta. Non riuscivo a far funzionare QMAKE_RPATHDIR, e sulla rete ci sono chatter che indicano che in effetti QMAKE_RPATHDIR non funziona. –

1

DOLLARO = $

QMAKE_LFLAGS + = -Wl, -rpath = $$ {DOLLARO} $$ {DOLLARO} ORIGIN /../ myLibs

1

Questa è una domanda molto vecchia, ma per le persone che arrivano attraverso una ricerca: i metodi descritti nelle vecchie risposte non sono più necessari. versioni Qt moderni (5,9 nel mio caso), consentono di utilizzare proprio questo:

QMAKE_RPATHDIR += lib 

Questo aggiungerà le voci necessarie (tra cui $ORIGIN e -Wl,-z,origin ove necessario) automaticamente il makefile, a patto che si sta utilizzando una directory relativa. Significa che lib produrrà le voci necessarie per "origine", mentre qualcosa come /lib no. Qualsiasi directory relativa aggiunta a QMAKE_RPATHDIR verrà eseguita automaticamente rispetto a $ORIGIN.

Problemi correlati