【发布时间】:2015-07-17 01:54:51
【问题描述】:
我正在尝试让地址清理程序在 FreeBSD 10.1 版本上工作,但每当我尝试使用 -fsanitize=address 编译程序时,我都会得到对 _asan_stack_malloc_1 等的未定义引用,等等。我发现
https://forums.freebsd.org/threads/gcc-clang-address-sanitizer.47985/ on google 但添加-L/usr/local/lib -I/usr/local/include 的建议并没有解决链接问题。我尝试了 FreeBSD 的 llvm 二进制文件,但是当我用那个 clang 编译时,我得到了 /usr/bin/../lib/clang/3.6.0/lib/freebsd/libclang_rt.asan-x86_64.a , no such file or directory. 。无论哪种方式,我都不确定我需要链接哪个库或它在哪里。
下面是我尝试编译的程序,这是我使用的命令,
clang -fsanitize=address san.c
#include <stdio.h>
int main(void)
{
return 0;
}
【问题讨论】:
-
-L /usr/local/lib 在您的链接中意味着他们已经从端口编译了更新版本的 clang 并将其安装到 /usr/local 中。你这样做了吗?
-
好点,但
-L/usr/lib或-L/lib也不起作用。 -
“which clang”和“clang --version”的输出是什么?
-
/usr/bin/clang` FreeBSD clang 版本 3.4.1 (tags/RELEASE_34/dot1-final 208032) 20140512`