如何在 gcc (windows 8.1) 上使用 ubsan
how to use ubsan on gcc (windows 8.1)
为了更好地防止 UB 案例,例如:
#include <stdio.h>
int f(){
int x;
return x;
}
int main()
{
f();
while(1);
return 0;
}
我 updated my GCC today so I could use ubsan。根据 gcc --version
,我当前的版本是 5.3.0。我以为这次更新会添加 ubsan,但似乎不是,因为在用 C:\Users\my_name\Desktop>gcc -fsanitize=undefined a.c
编译后,我得到的是:
c:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../../mingw32/bin/ld.exe: cannot fin
d -lubsan
现在,我看到 this post but the OS is Ubuntu 15.04
and I use Win 8.1
so that didn't help me. One of the comments here 说:
You will need to install the libubsan package.
但我不知道它是否适用于 windows/ubuntu
,即使它适用于 windows
用户,我也不知道该怎么做。
编辑: 我也试过编译 gcc -fno-sanitize=all a.c
(here 中有很多选项)并且编译时没有警告,所以我猜GCC
以某种方式识别消毒剂(因为它编译正常)但出于某种原因拒绝了我最初的编译尝试
对于 x86_64 上的 GCC 消毒程序运行时库(包括 -lubsan
)仅支持 Linux、OSX、FreeBSD 和 Solaris(参见 https://github.com/gcc-mirror/gcc/blob/master/libsanitizer/configure.tg详情)。很遗憾,您还不能在 Windows.
上使用 UBsan
为了更好地防止 UB 案例,例如:
#include <stdio.h>
int f(){
int x;
return x;
}
int main()
{
f();
while(1);
return 0;
}
我 updated my GCC today so I could use ubsan。根据 gcc --version
,我当前的版本是 5.3.0。我以为这次更新会添加 ubsan,但似乎不是,因为在用 C:\Users\my_name\Desktop>gcc -fsanitize=undefined a.c
编译后,我得到的是:
c:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../../mingw32/bin/ld.exe: cannot fin d -lubsan
现在,我看到 this post but the OS is Ubuntu 15.04
and I use Win 8.1
so that didn't help me. One of the comments here 说:
You will need to install the libubsan package.
但我不知道它是否适用于 windows/ubuntu
,即使它适用于 windows
用户,我也不知道该怎么做。
编辑: 我也试过编译 gcc -fno-sanitize=all a.c
(here 中有很多选项)并且编译时没有警告,所以我猜GCC
以某种方式识别消毒剂(因为它编译正常)但出于某种原因拒绝了我最初的编译尝试
对于 x86_64 上的 GCC 消毒程序运行时库(包括 -lubsan
)仅支持 Linux、OSX、FreeBSD 和 Solaris(参见 https://github.com/gcc-mirror/gcc/blob/master/libsanitizer/configure.tg详情)。很遗憾,您还不能在 Windows.