10 c++ linker clang chaiscript
我一直在
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)
Run Code Online (Sandbox Code Playgroud)
当试图链接到.so我正在使用的命令是.
clang++ Main.cpp -o foo -L./ -lchaiscript_stdlib-5.3.1.so
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
libchaiscript_stdlib-5.3.1.so与Main.cpp位于同一目录中我认为-L./会将.so添加到库搜索路径.
Som*_*ude 21
是的,该-L选项会添加搜索路径,但链接器会添加.so(或.a)后缀本身(就像添加lib前缀一样).所以你只需要-lchaiscript_stdlib-5.3.1和链接器就可以找到它.
您也可以跳过添加路径,并直接链接到文件:
clang++ Main.cpp -o foo libchaiscript_stdlib-5.3.1.so
Run Code Online (Sandbox Code Playgroud)
请注意,运行时链接程序(在运行程序时实际加载共享库)可能无法找到库(如果它不在运行时链接程序路径中).您可以告诉(编译时)链接器在生成的程序中添加共享库路径的路径:
clang++ Main.cpp -o foo libchaiscript_stdlib-5.3.1.so -Wl,-rpath,/absolute/path
Run Code Online (Sandbox Code Playgroud)
该-Wl选项告诉编译器前端将选项传递给链接器,链接器选项-rpath会添加运行时链接器搜索路径的路径.
| 归档时间: |
|
| 查看次数: |
19942 次 |
| 最近记录: |