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
添加到加载时库路径(当操作系统加载库时)。