我在Ubuntu 16.04.2,64位上使用预构建的LLVM / Clang 3.8.0二进制文件。我试图将最小程序提升到LLVM IR,然后将IR链接到DataFlowSanitizer库以生成可执行代码。在第二步中,该进程会抛出一堆链接器错误。
#include <sanitizer/dfsan_interface.h>
#include <assert.h>
int main(void) {
int i = 1;
dfsan_label i_label = dfsan_create_label("i", 0);
dfsan_set_label(i_label, &i, sizeof(i));
return 0;
}
clang -c -emit-llvm -fsanitize = dataflow test2.c -o test2.bc
clang -fsanitize = dataflow test2.bc -o test2
/usr/lib/gcc/x86_64-linux-gnu/5.4.0 /../../../ x86_64的-Linux的GNU / Scrt1.o: 在功能
_start':(.text+0x20): undefined reference to
main&#39;
/tmp/test2-c642ef.o:在函数dfs$main':
dfs $ dfsan_create_label&#39; test2.bc :(。text + 0xeb):未定义引用
test2.bc:(.text+0x96): undefined reference todfs$dfsan_set_label'
dfs $ dfsw $ dfsan_create_label&#39;:
/tmp/test2-c642ef.o: In function
test2.bc :(。text + 0x16e):未定义引用dfs$dfsan_create_label'
DFS $ dfsw $ dfsan_set_label&#39 ;:
/tmp/test2-c642ef.o: In function
test2.bc :(。text + 0x1e4):未定义的引用`dfs $ dfsan_set_label&#39;
clang-3.8:错误:链接器命令失败,退出代码为1(使用-v to 见调用)
知道我可能做错了什么吗?