是否有gcc的选项丢弃-g标志?

时间:2013-10-23 12:00:43

标签: c++ linux debugging gcc

我正在构建一个提供许多makefile的包,每个makefile都有类似

的硬编码
CFLAGS = -g -O2 -Wall ...
CXXFLAGS = -g -O2 -Wall ...

我想放弃-g选项,但我不想编辑所有的makefile(甚至不能自动编辑sed或类似的东西)。程序包附带的configure脚本没有启用/禁用调试选项,但我可以传递CFLAGSCXXFLAGS个变量,并将它们的值连接到CFLAGSCXXFLAGS变量分别包含-g选项。

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

这样的东西
gcc -option-im-looking-for -g file.c -o file

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

2 个答案:

答案 0 :(得分:11)

您可以通过添加-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.

答案 1 :(得分:1)

您无需编辑makefile。只需覆盖命令行上的变量:

$ cat Makefile 
CFLAGS = -g -Wall
all:
    echo $(CFLAGS)
$ make
echo -g -Wall
-g -Wall
$ make CFLAGS=-Wall
echo -Wall
-Wall