2015-09-28 94 views
1

我試圖將$ORIGIN添加到我的程序的rpath變量中。.pro文件中的RPATH不起作用

添加以下行到我的.pro文件:

unix: QMAKE_RPATHDIR += \$$ORIGIN 

並驗證該命令是真正通過檢查編譯輸出增加。 g ++調用qmake生成的代碼如下所示:

g++ -Wl,-rpath,/home/sky/Qt/5.5/gcc_64 -Wl,-rpath,$ORIGIN -Wl... 

正如您所看到的,將添加origin(以及其他一些值)。但是,如果我使用readelf檢查rpath的值,則不列出originis。相反,它顯示「空」項(只有兩個冒號)除了通過QMAKE加入entrys:

0x000000000000000f (RPATH)    Bibliothek rpath: [/home/sky/Qt/5.5/gcc_64::/home/sky/Qt/5.5/gcc_64/lib] 

缺少什麼我在這裏?謝謝你的幫助!

回答

2

正是在這裏"qmake and rpath"

你必須使用運行時鏈接程序的$ ORIGIN功能。 不幸的是,由於裝載機開發者的一些輝煌的遠見,他們使用'$'作爲前綴,這使得它成爲一個傳奇般的王室痛苦。在QMAKE_RPATHDIR中使用它是不可能的。您必須 改用:

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

,使其生存兩項目文件和Makefile文件。


在您的命令行它轉到Shell作爲-Wl,-rpath,$ORIGIN$ORIGIN擴大,因爲$美元符號是由shell來解釋。應該引用它。 LD.SO(8) man pagegcc -Wl,-rpath,'$ORIGIN/../lib'也提供了此類報價的示例。

+0

完美的作品!謝謝! – Felix