繁体   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