gcc, сделайте: как отключить сбой на предупреждении?

Я пытаюсь создать gcc для использования с AVR микро контроллер и avr-ada, и я поразил контрольно-пропускной пункт, вызванный моим обычным компилятором, являющимся слишком требовательным в отношении версии, в которой я нуждался для AVR. Я получаю соблюдающее предупреждение, которое в свою очередь вызывает gcc, или сделайте для создания отчетов об ошибке:

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

Существует ли способ сообщить gcc или сделать для не сбоя на предупреждениях?

11
задан Dr. Watson 10 March 2010 в 03:07
поделиться

6 ответов

Триггером здесь является -gnatpg (на самом деле -gnatg): это "режим реализации GNAT (используется для компиляции модулей GNAT)". -gnatp означает "подавлять все проверки".

Я не уверен в полном эффекте -gnatg, хотя он определенно заставляет предупреждения рассматриваться как ошибки - как -Werror - во всяком случае, при сборке самого компилятора; мне кажется, я помню, что видел несмертельные предупреждения при сборке RTS.

Одним из вариантов может быть компиляция только exp_ch5.adb вручную без -gnatg; команда, которую вы перечислили, была выдана в 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

Затем вернитесь на один уровень назад и снова "make".

Это кросс-компилятор, поэтому вам не придется (я надеюсь!) повторять это для всех трех этапов полной сборки.

5
ответ дан 3 December 2019 в 00:44
поделиться

Попробуйте make -k вместо make . Это будет «продолжаться», а не останавливаться.

42
ответ дан 3 December 2019 в 00:44
поделиться

В качестве альтернативы погружению в систему сборки попробуйте установить -Wno-error в CFLAGS, что вы сможете сделать через среду (или во время настройки, если вы используете систему сборки GNU ).

11
ответ дан 3 December 2019 в 00:44
поделиться

В общем случае игнорировать предупреждения компилятора - не лучшая идея. Однако, если это часть более крупного процесса make, вероятно, ранее в последовательности был вставлен флаг -Werror . Начните с поиска этого.

После осмотра, кажется, есть множество флагов для управления предупреждениями при компиляции кода Ada. Например, -gnatwF будет подавлять предупреждения в формальных файлах без ссылок в соответствии с этого руководства . Возможно, нужный вам переключатель можно найти в приведенном там списке.

3
ответ дан 3 December 2019 в 00:44
поделиться

Похоже, в Makefile установлен флаг -Werror. Возможно, вы можете найти параметры CFLAGS в Makefile и удалить флаг -Werror. Флаг Werror превратит все предупреждения в ошибки.

3
ответ дан 3 December 2019 в 00:44
поделиться

Как насчет того, чтобы поместить «предупреждения прагмы (выкл.,« ... »)» в некорректные части вашего кода?

См. http://www.adacore.com/2007/11/19/ ада-гем-18 ​​/ .

0
ответ дан 3 December 2019 в 00:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: