簡體   English   中英

Clang 與 .so 文件鏈接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM