CIs*_*ies 6 c windows gcc undefined-behavior ubsan
为了更好地防止 UB 情况,例如:
#include <stdio.h>
int f(){
int x;
return x;
}
int main()
{
f();
while(1);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我今天更新了我的 GCC,所以我可以使用ubsan。我当前的版本是 5.3.0 根据gcc --version
. 我以为这次更新会添加ubsan,但似乎不是因为在编译后C:\Users\my_name\Desktop>gcc -fsanitize=undefined a.c
我得到了:
c:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../../mingw32/bin/ld.exe: 无法 fin d -lubsan
现在,我已经看到了这篇文章,但操作系统是Ubuntu 15.04
我使用的,Win 8.1
所以对我没有帮助。这里的评论之一说:
您将需要安装 libubsan 软件包。
但我不知道它是否是针对 的windows/ubuntu
,即使是针对windows
用户的,我也不知道该怎么做。
编辑:我也试过编译gcc -fno-sanitize=all a.c
(有很多的选择在这里),这编译没有警告,所以我想GCC
认识消毒剂以某种方式(因为它编译OK),但拒绝我原来编译尝试由于某种原因
对于 x86_64 上的 GCC,sanitizer 运行时库(包括-lubsan
)仅支持 Linux、OSX、FreeBSD 和 Solaris(有关详细信息,请参阅https://github.com/gcc-mirror/gcc/blob/master/libsanitizer/configure.tg)。不幸的是,您还无法在 Windows 上使用 UBsan。