2011-09-21 12 views
14

Chciałbym użyć opcji -rpath linker, aby ustawić ścieżkę wyszukiwania .so. Chciałbym to przeszukać [app_path]/../lib. Próbowałem dodać to do mojego pliku qmake .pro:

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

Ale QMake linki mój projekt ten sposób:

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

Jak mogę uciec $ORIGIN?

Odpowiedz

10

Jeśli chcesz $ORIGIN być (odpowiednio) oceniano przy budowie można po prostu dodać do swojego pliku .pro:

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

Interesujące. Czy to nowa opcja? –

+1

Odkryłem to tutaj, gdy próbowałem wykonać działanie 'QMAKE_RPATH': [QTBUG-8110] (https://bugreports.qt-project.org/browse/QTBUG-8110). Zgodnie z tym łączem 'QMAKE_RPATH' i' QMAKE_LFLAGS_RPATH' nie działają. 'QMAKE_RPATHDIR' działa dla mnie przynajmniej z Qt 4.8.4 i Qt 4.8.5. – Aurelien

+0

Jest on zdefiniowany tutaj: [qmake Variable Reference] (http://doc.qt.digia.com/qt/qmake-variable-reference.html#qmake-rpathdir) – Aurelien

21

znalazłem here sposób, aby prawidłowo go ucieczki:

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

Po prostu pomyślałem, że wspomnę o tym, że muszę dodać '-z origin', aby wszystko działało dla mnie. Tak więc wszystkie razem, to jest 'QMAKE_LFLAGS + = '-Wl, -rpath, \' \ $$ ORIGIN /../ lib \ ', - z, origin''. –

+0

To jest poprawna odpowiedź. Nie mogłem uzyskać QMAKE_RPATHDIR do pracy, a tam jest rozmowa na "sieci wskazującej, że rzeczywiście QMAKE_RPATHDIR nie działa. –

1

DOLLAR = $

QMAKE_LFLAGS + = -Wl, -rpath = $$ {DOLAR} $$ {DOLAR} POCHODZENIE /../ myLibs

1

To jest naprawdę stare pytanie, ale dla osób, które szukają tutaj informacji: metody opisane w starych odpowiedziach nie są już potrzebne. Nowoczesne wersje Qt 5.9 (w moim przypadku), pozwalają po prostu użyć tego:

QMAKE_RPATHDIR += lib 

To doda potrzebne dane (w tym $ORIGIN i -Wl,-z,origin gdzie potrzebne) automatycznie do makefile, tak długo jak używasz względny katalog. Oznacza to, że lib wygeneruje potrzebne wpisy "pochodzenia", podczas gdy coś takiego jak /lib nie będzie. Dowolny katalog względny dodany do QMAKE_RPATHDIR zostanie automatycznie wykonany względem $ORIGIN.

Powiązane problemy