如何抑制-Werror =指向int-cast的指针和-Werror =解决Linux中的错误类型

时间:2014-09-11 15:38:25

标签: c linux gcc gnu

如何在Linux中压制-Werror=pointer-to-int-cast-Werror=address类错误?

我知道以下是用于抑制上述错误的选项。

-Wno-error=address
-Wno-pointer-to-int-cast

但我的问题是如何在构建大型项目时使用它们或在何处编辑编译器设置。

2 个答案:

答案 0 :(得分:2)

如果您使用的是标准的Makefile构建系统,请将它们放在CFLAGS中。

如果是autoconf项目,请将它放在Makefile.am中,如下所示:

CFLAGS = -Wno-error = address -Wno-pointer-to-int-cast

如果您正在使用其他一些构建系统,则需要在将.c文件编译为.o时将其传递给gcc命令行。

如果它是使用autoconf的现有包,您可以将它传递给./configure,如下所示:

$ ./configure --extra-cflags =' - Wno-error = address -Wno-pointer-to-int-cast'

其他基于autoconf的项目从环境中获取它而不是(或除了)--extra-cflags:

$ CFLAGS =' - Wno-error = address -Wno-pointer-to-int-cast'./configure --any-other-options-you-need

答案 1 :(得分:1)

如果您使用的是gcc,请考虑以下事项:

  1. 您可以使用以下方法编译程序:
    gcc -o obj src_file

    src_file:* .c(任何扩展名为“.c”的文件名)

  2. 如果您使用的是Makefile,那么

    #SRC代表源文件
    #OBJ代表目标文件
    SRC = file.c
    OBJ =文件
    CFLAGS = -Wall#不包含-Werror标志,否则警告将为
                    #视为错误。
    $(OBJ):$(SRC)
          gcc $(CFLAGS)-o $(OBJ)$(SRC)