9

我正在构建一个提供许多makefile的包,每个makefile都有硬编码,例如

CFLAGS = -g -O2 -Wall ...
CXXFLAGS = -g -O2 -Wall ...

我想放弃-g选项,但我不想编辑所有的makefile(即使不是自动使用sed或类似的东西)。软件包附带的configure脚本没有启用/禁用调试选项,但我可以传递它CFLAGSCXXFLAGS变量,并将它们的值分别连接到包含该选项的CFLAGS和变量。CXXFLAGS-g

是否有一个选项会-g在指定的情况下丢弃?就像是

gcc -option-im-looking-for -g file.c -o file

将构建file没有调试符号的二进制文件。我不想剥离二进制文件,我希望它被剥离。

4

2 回答 2

12

您可以通过添加来否定. 说-g-g0

gcc -g -g0 foo.c -o file.o

将产生一个与通过说获得的二进制文件相同的二进制文件

gcc foo.c -o foo.o

报价man gcc

   -glevel
   ...
        Level 0 produces no debug information at all.  Thus, -g0 negates
       -g.
于 2013-10-23T12:18:14.783 回答
1

您不需要编辑生成文件。只需覆盖命令行上的变量:

$ cat Makefile 
CFLAGS = -g -Wall
all:
    echo $(CFLAGS)
$ make
echo -g -Wall
-g -Wall
$ make CFLAGS=-Wall
echo -Wall
-Wall
于 2013-10-23T12:12:29.787 回答