我有一個隱含加載幾個。所以庫的可執行文件,所有的人都被我建。對於部署,或至少測試/調試,我想有他們都在同一個目錄下:如何在Linux rpath中對可執行文件位置進行編碼?
my_executable
libmylib1.so
libmylib2.so
要獲得可執行文件隱含加載庫,我想設置一個rpath的(DT_RUNPATH )爲可執行文件的目錄。隨着OS X,我會做到這一點,像這樣:
clang -dynamiclib -o libmylib1.dylib -install_name @rpath/libmylib1.dylib src1.c src2.c
clang -dynamiclib -o libmylib2.dylib -install_name @rpath/libmylib2.dylib src3.c src4.c
clang -o my_executable -L. -llibmylib1.so -llibmylib2.so -Wl,-rpath,@loader_path/. main.c
注意,形成可執行的rpath在OS X中使用Linux的@loader_path/.
,最接近我可以來這是
gcc -dynamiclib -o libmylib1.so src1.c src2.c
gcc -dynamiclib -o libmylib2.so src3.c src4.c
gcc -o my_executable -L. -llibmylib1.so -llibmylib2.so -Wl,-rpath=. main.c
的這裏的問題是,在Linux上,rpath遵循當前的工作目錄,而不是可執行文件的目錄。有什麼辦法可以在Linux上完成同樣的事情嗎?
這就是它!謝謝。 –