我有一個應用程序爲了代碼重用的目的被分成幾個庫。在Windows上,我所要做的就是將.dll文件放在與可執行文件相同的路徑中,並自動找到它們。在Linux上(因爲硬編碼路徑),我必須指定環境變量LD_LIBRARY_PATH
或在可執行文件之前預先加載庫。作爲可執行文件目錄的共享庫路徑
我已經看到了一些使用鏈接器選項-Wl,-rpath=<PATH>
嵌入路徑的事情,我試過它使用.
作爲路徑。但是這只是查看當前的工作目錄,而不是可執行文件的目錄。
有沒有一種方法可以在鏈接器中默認查找共享庫的可執行文件的目錄(如在Windows上)?
謝謝! 馬特
使用$ ORIGIN時,您需要確保$正確引用,以便鏈接器實際看到它。從命令行,你想要「-rpath \ $ ORIGIN」,並從你想要的「Makefile」「-rpath \ $$ ORIGIN」 – 2009-11-23 20:38:29
我正在使用Eclipse和CDT,並且我將這個選項放在各種鏈接器標誌下。我把'-Wl,-rpath = $$ ORIGIN'並在輸出窗口中顯示一個$。但它似乎並不奏效。我嘗試了幾個變化,但沒有任何反應。這就像鏈接器忽略了國旗。我已經試過: -Wl,-rpath = $ ORIGIN 輪候冊, - rpath的= $ ORIGIN -Wl,-rpath =/$ ORIGIN -Wl,-rpath = $ ORIGIN/ -Wl,-rpath =/$ ORIGIN/ 等 – CuppM 2009-11-23 21:05:01
使用elfdump或本地等價物查看裏面有什麼?使用ldd並查看它說了什麼? – bmargulies 2009-11-23 21:39:11