可以說我有這樣的:cmake - 是否有可能在運行時將可執行文件與相對路徑鏈接到共享庫?
../project_dir
main.cpp
mylib.cpp
mylib.h
大廈的步驟將是:
g++ -c mylib.cpp -o mylib.o
g++ -shared -o libmylib.so mylib.o
g++ -L$(pwd) -Wl,-rpath='$ORIGIN' -o exec main.cpp -lmylib
exec
將是我的二進制可執行文件的輸出。當我與測試:
ldd exec
輸出線爲:
libmylib.so => /full/path/to/build/directory/libmylib.so (0x00007f75fdd1f000)
即輸出線是我的問題,是有可能得到:
所以每當我移動可執行文件,我可以將共享庫一起移動。如果可能的話,如何用cmake做到這一點?
謝謝,這節省了我的一天! – dontloo
當我用$ ORIGIN添加上面兩行以及上面的行時,仍然失敗: /usr/local/bin/cmake -E cmake_link_script CMakeFiles/app.dir/link.txt --verbose = 1 /usr/bin/C++ -Wl,-rpath -Wl,$ ORIGIN -rdynamic CMakeFiles/app.dir/app.cpp.o -o app -Wl,-rpath,「\ $ ORIGIN」 CMakeFiles/app.dir/app.cpp.o:在main函數中: app.cpp :(.text + 0x42):未定義引用MyClass :: app(std :: string const&)' collect2:error:ld返回1退出狀態 CMakeFiles/app.dir/build.make:94:目標'app'的配方失敗 make [2]:*** [app] Error 1 –
CMake已更新,因此可能會有更改,現在錯了.. 對不起,我不再反對CMake,所以我沒有意識到這些變化。 – explo91