我不断得到
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 file.
我正在使用这个命令:
clang++ Main.cpp -o foo -L./ -lchaiscript_stdlib-5.3.1.so
我究竟做错了什么?
File libchaiscript_stdlib-5.3.1.so与文件位于同一目录中Main.cpp。我以为-L./
会添加.so到库搜索路径。
是的-L
选项添加搜索路径,但链接器添加.so
(or .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
The -Wl
option 告诉编译器前端将选项传递给链接器,链接器选项-rpath
添加运行时链接器搜索路径的路径。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)