我只是compiled Clang using CMake,然后尝试运行消毒剂(使用clang -fsanitize=address
),但是得到了:
/usr/bin/ld: cannot find <CLANG_DIR>/9.0.0/lib/linux/libclang_rt.asan-x86_64.a:
No such file or directory
然后我去了"How to build" Address sanitizer page,但它只是说:
使用CMake构建LLVM / Clang。
这将我带回到第一页。在页面中任何地方唯一提到的“消毒”是:
LLVM_USE_SANITIZER:STRING
定义用于构建LLVM二进制文件和测试的清理程序。可能的值为Address,Memory,MemoryWithOrigins,Undefined,Thread和Address; Undefined。默认为空字符串。
但这与使用消毒剂自身构建LLVM有关,而不与在构建之后使它们可用。
那么,我该如何实际构建消毒器并使它们可用于Clang?
答案 0 :(得分:1)
可实现Asan回调的运行时库位于compiler-rt回购中,因此您也需要对其进行构建。一种简单的方法是在运行cmake之前将compiler-rt
克隆到llvm/projects
。