Ubuntu 18+ 缺少 Asan 动态运行时

Asan dynamic runtime is missing on Ubuntu 18+

如果我编译一个简单的程序(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

我在本地机器(Ubuntu 20.04 和 clang-12)以及我们的构建运行器(Ubuntu 18.04 和 clang-10)上收到示例代码的错误。

我是不是遗漏了什么,或者我应该提交错误并提交给谁? (我看到的选项是Ubuntu或LLVM/Clang队)

请注意,这个问题 与在接近投票中被建议重复的问题 不同 (链接的问题作者在评论中确认了这一点)。

这是 clang 前端的缺陷——当给定 -shared-libsan 标志时,它 应该 自动添加 -Wl,-rpath=/usr/lib/llvm-NN/lib/clang/MM.M.M/lib/linux 到link 行,但它没有。

您可以自己使用

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))