如果我编译了一个简单的程序(sample.cpp):
#include <cstdio>
int main() {
printf("Hello, World");
return 0;
}有一个共享的消毒液库,即
clang++-12 -fsanitize=address -shared-libsan sample.cpp -o sample在运行./sample时,我会得到以下错误
./sample: error while loading shared libraries: libclang_rt.asan-x86_64.so: cannot open shared object file: No such file or directory我在本地机器(Ubuntu20.04和clang-12)以及我们的构建运行程序(Ubuntu18.04和clang-10)上得到了示例代码的错误。
我是不是漏掉了什么,还是我要向谁提交一个窃听器?(我看到的选项是Ubuntu或LLVM/Clang团队)
请注意,这一问题不同于在密切表决中被建议为重复的问题(相关问题作者在评论中证实了这一点)。
发布于 2021-08-02 03:50:03
这是clang前端的不足--当给定-shared-libsan标志时,它应该自动将-Wl,-rpath=/usr/lib/llvm-NN/lib/clang/MM.M.M/lib/linux添加到链接行,但它没有。
你可以自己使用。
CXX=clang++-12
$CXX -fsanitize=address -shared-libsan sample.cpp -o sample \
-Wl,-rpath=$(dirname $($CXX --print-file-name libclang_rt.asan-x86_64.so))https://stackoverflow.com/questions/68571138
复制相似问题