gcc,make:如何禁用警告失败?

Dr.*_*son 11 c gcc makefile ada

我正在尝试使用AVR微控制器和avr-ada构建gcc,并且我遇到了一个障碍,因为我的常规编译器对AVR所需的版本过于挑剔.我收到以下警告,这反过来导致gcc或make报告错误:

gcc -c -g -O2 -gnatpg -gnata -nostdinc -I- -I. -Iada 
  -I../../gcc/ada ../../gcc/ada/exp_ch5.adb -o ada/exp_ch5.o
exp_ch5.adb:177:16: warning: function "Has_Address_Clause" is not referenced
make[2]: *** [ada/exp_ch5.o] Error 1
make[1]: *** [all-gcc] Error 2
make: *** [all] Error 2
Run Code Online (Sandbox Code Playgroud)

有没有办法指示gcc或使警告不失败?

Dir*_*tel 42

尝试make -k而不仅仅是make.这将"继续"而不是停止.


小智 11

作为潜入构建系统的替代方法,尝试-Wno-error在CFLAGS中进行设置,您应该可以通过环境进行设置(或者在配置时,如果使用GNU构建系统).


Zel*_*luX 5

看来-Werror标志是在 Makefile 中设置的。也许您可以在 Makefile 中查找 CFLAGS 选项并删除 -Werror 标志。Werror 标志将使所有警告变成错误。


Sim*_*ght 5

这里的触发器是-gnatpg(实际上是-gnatg):这是"GNAT实现模式(用于编译GNAT单元)".-gnatp表示"禁止所有检查".

我不确定-gnatg的全部效果,尽管它确实会导致警告在构建编译器本身时被视为错误 - 比如-Werror - ; 我想我记得在构建RTS时看到了非致命的警告.

一种可能性是在没有-gnatg的情况下手工编译exp_ch5.adb; 你列出的命令是在gcc /发出的,所以

$ cd gcc
$ gcc -c -g -O2 -gnatp -gnata -nostdinc -I- -I. -Iada -I../../gcc/ada \
  ../../gcc/ada/exp_ch5.adb -o ada/exp_ch5.o
Run Code Online (Sandbox Code Playgroud)

然后备份一个级别,再次'make'.

这是一个交叉编译器,所以你不会(我希望!)需要在完整构建的所有三个阶段重复这个.