[英]Clang linking with a .so file
我不斷得到
ld: library not found for -lchaiscript_stdlib-5.3.1.so
clang: error: linker command failed with exit code 1 (use -v to see invocation)
嘗試鏈接到.so文件時。
我正在使用這個命令:
clang++ Main.cpp -o foo -L./ -lchaiscript_stdlib-5.3.1.so
我究竟做錯了什么?
文件libchaiscript_stdlib-5.3.1.so與文件Main.cpp位於同一目錄中。 我認為-L./
會將.so添加到庫搜索路徑中。
是的, -L
選項會添加搜索路徑,但鏈接器會添加.so
(或.a
)后綴本身(就像添加lib
前綴一樣)。 所以你只需要-lchaiscript_stdlib-5.3.1
鏈接器就會找到它。
也可以跳過路徑的添加,直接與文件鏈接:
clang++ Main.cpp -o foo libchaiscript_stdlib-5.3.1.so
請注意,如果運行時鏈接程序不在運行時鏈接程序的路徑中,則運行時鏈接程序(即在您運行程序時實際加載共享庫的程序)可能無法找到該庫。 您可以告訴(編譯時)鏈接器在生成的程序中添加到共享庫路徑的路徑:
clang++ Main.cpp -o foo libchaiscript_stdlib-5.3.1.so -Wl,-rpath,/absolute/path
-Wl
選項告訴編譯器前端將一個選項傳遞給鏈接器,而鏈接器選項-rpath
將一個路徑添加到運行時鏈接器搜索路徑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.