源码编译Clang后使用-fsanitize=address提示找不到libclang_rt.asan
解决从源码编译Clang后无法使用AddressSanitizer的问题
你遇到的错误根源很明确:编译Clang时没有包含compiler-rt子项目,而AddressSanitizer(ASAN)依赖的运行时库正是由compiler-rt提供的,所以安装后的Clang缺少对应的库文件。
你的原编译命令只开启了clang和clang-tools-extra项目,漏掉了compiler-rt,修正步骤如下:
- 清理原编译目录(可选但推荐,避免缓存干扰):
rm -rf build
- 重新执行CMake配置,将compiler-rt加入启用项目列表:
cmake -S llvm -B build -G Ninja -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;compiler-rt" -DCMAKE_BUILD_TYPE=Release
- 重新编译并安装:
ninja -C build sudo ninja -C build install
完成后,再次执行clang -fsanitize=address hello.c就能正常链接ASAN库,编译通过了。
内容的提问来源于stack exchange,提问作者MWB
相关产品推荐
相关产品推荐

