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