代码之家  ›  专栏  ›  技术社区  ›  Dr. Watson

gcc,make:如何禁用fail-on警告?

  •  10
  • Dr. Watson  · 技术社区  · 16 年前

    我正试图构建用于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
    

    是否有方法指示GCC或使其在警告时不失败?

    7 回复  |  直到 9 年前
        1
  •  5
  •   Simon Wright    9 年前

    这里的触发器是-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
    

    然后备份一个级别,然后再次“生成”。

    这是一个交叉编译器,所以您不会(我希望!)需要对完整构建的所有三个阶段重复此操作。

        2
  •  39
  •   Dirk is no longer here    16 年前

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

        3
  •  11
  •   Jack    16 年前

    作为进入构建系统的替代方法,请尝试设置 -Wno-error 在cflags中,您应该能够通过环境(或者在配置时,如果使用GNU构建系统)完成这项工作。

        4
  •  4
  •   ezpz    16 年前

    一般来说,忽略编译器的警告不是一个好主意。但是,如果这是一个更大的制造过程的一部分,那么 -Werror 在序列的前面插入的标志。从寻找开始。

    环顾四周,在编译ADA代码时似乎有大量的标志来控制警告。例如, -gnatwF 取消对未引用表单的警告 根据 this guide .可能您需要的开关可以在这里提供的列表中找到。

        5
  •  3
  •   ZelluX    16 年前

    似乎在makefile中设置了-werror标志。也许您可以在makefile中查找cflags选项并删除-werror标志。werror标志将使所有警告变为错误。

        6
  •  2
  •   Bob Blogge    13 年前

    在gcc配置中,您可以添加 --disable-werror .

    不过,最好先找个合适的补丁。

        7
  •  0
  •   user275257    16 年前

    将“pragma warnings(off,”…“)”放入代码中有问题的部分怎么样?

    http://www.adacore.com/2007/11/19/ada-gem-18/ .