Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用消毒液编译Clang_Clang_Address Sanitizer - Fatal编程技术网

如何使用消毒液编译Clang

如何使用消毒液编译Clang,clang,address-sanitizer,Clang,Address Sanitizer,我刚刚试着运行一个消毒器(使用clang-fsanize=address),但得到了: /usr/bin/ld: cannot find <CLANG_DIR>/9.0.0/lib/linux/libclang_rt.asan-x86_64.a: No such file or directory /usr/bin/ld:找不到/9.0.0/lib/linux/libclang\u rt.asan-x86\u 64.a: 没有这样的文件或目录 然后我去了医院,但它只是说: 使

我刚刚试着运行一个消毒器(使用
clang-fsanize=address
),但得到了:

/usr/bin/ld: cannot find <CLANG_DIR>/9.0.0/lib/linux/libclang_rt.asan-x86_64.a:
  No such file or directory
/usr/bin/ld:找不到/9.0.0/lib/linux/libclang\u rt.asan-x86\u 64.a:
没有这样的文件或目录
然后我去了医院,但它只是说:

使用构建LLVM/Clang

这让我回到了第一页。在页面中的任何地方,唯一提到的“消毒”是:

LLVM\u使用\u消毒剂:字符串

定义用于构建LLVM二进制文件和测试的消毒器。可能的值包括地址、内存、带来源的内存、未定义的内存、线程和地址;未定义。默认为空字符串

但这与使用净化剂来构建LLVM本身有关,而不是在构建之后使它们可用


那么,我如何才能真正构建消毒器并使其可用于叮当呢?

实现Asan回调的运行时库处于repo中,因此您也需要构建它。实现这一点的一个简单方法是在运行cmake之前将
编译器rt
克隆到
llvm/projects

是这样的吗
cmake-GNinja-DLLVM\u ENABLE\u projects=“clang;clang tools extra;compiler rt”source到llvm-DCMAKE\u BUILD\u TYPE=Release
?是的,如果所有三个repo都在同一个文件夹中,您的命令就会起作用,肩并肩。如果将
clang
compiler rt
repo克隆到
llvm/tools/clang
llvm/projects/compiler rt
repo(如中所述),则只需执行
cmake-GNinja source到llvm-DCMAKE\u BUILD\u TYPE=Release