在Ubuntu 9.04下面编译gcc,总是编译失败,类似下面这样:
error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments
后来上网搜了一下,原来是这样的:
从gcc 4.0开始,添加了一些扩展的检查功能,如buffer overflow,ignoring return value等等,早在feroda core 4中,RedHat就已经默认打开了gcc的这个扩展,并在此基础上编译了fc4的几乎所有软件;ubuntu直到8.10版本才使能这个功能; 但是这个功能打开之后会造成很多程序编译不过,比如gcc:(,解决方法就是在编译的时候禁止掉fortify扩展:
make “CFLAGS=-U_FORTIFY_SOURCE”