gpt4 book ai didi

c++ - Clang 链接 .so 文件

转载 作者:可可西里 更新时间:2023-11-01 15:40:05 26 4
gpt4 key购买 nike

我一直在努力

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 添加一个运行时链接器搜索的路径路径。

关于c++ - Clang 链接 .so 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25160245/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com