C++ 与.so文件的叮当链接
我一直在C++ 与.so文件的叮当链接,c++,linker,clang,chaiscript,C++,Linker,Clang,Chaiscript,我一直在 ld:未找到-lchaiscript_stdlib-5.3.1.so的库 叮当声:错误:链接器命令失败,退出代码为1(使用-v查看调用) 尝试链接到.so文件时 我正在使用以下命令: clang++Main.cpp-o foo-L./-lchaiscript\u stdlib-5.3.1.so 我做错了什么 文件libchaiscript_stdlib-5.3.1.so与文件Main.cpp位于同一目录中。我以为-L./会将.so添加到库搜索路径中。是的,-L选项会添加搜索路径,但
ld:未找到-lchaiscript_stdlib-5.3.1.so的库
叮当声:错误:链接器命令失败,退出代码为1(使用-v查看调用)
尝试链接到.so文件时
我正在使用以下命令:
clang++Main.cpp-o foo-L./-lchaiscript\u 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
向运行时链接器搜索路径添加路径。与-rpath
之间有什么区别?在我看来,两者都用于指定库路径。@Searene-L
添加到构建时链接器路径-rpath
添加到加载时库路径(当操作系统加载库时)。