C++ gcc是否有放弃-g标志的选项?
我正在构建一个包,它提供了许多makefile,每个makefile都有硬编码,比如C++ gcc是否有放弃-g标志的选项?,c++,linux,debugging,gcc,C++,Linux,Debugging,Gcc,我正在构建一个包,它提供了许多makefile,每个makefile都有硬编码,比如 CFLAGS = -g -O2 -Wall ... CXXFLAGS = -g -O2 -Wall ... gcc -option-im-looking-for -g file.c -o file 我想放弃-g选项,但我不想编辑所有的makefile(即使不是使用sed或类似工具自动编辑)。软件包附带的configure脚本没有启用/禁用调试选项,但我可以传递CFLAGS和cxflags变量,并将它们的值分
CFLAGS = -g -O2 -Wall ...
CXXFLAGS = -g -O2 -Wall ...
gcc -option-im-looking-for -g file.c -o file
我想放弃-g
选项,但我不想编辑所有的makefile(即使不是使用sed
或类似工具自动编辑)。软件包附带的configure
脚本没有启用/禁用调试选项,但我可以传递CFLAGS
和cxflags
变量,并将它们的值分别连接到CFLAGS
和cxflags
变量,其中包括-g
选项
如果指定了-g
,是否有放弃该选项的选项?差不多
CFLAGS = -g -O2 -Wall ...
CXXFLAGS = -g -O2 -Wall ...
gcc -option-im-looking-for -g file.c -o file
将生成不带调试符号的二进制
文件
。我不想剥离二进制文件,我希望它被剥离创建。您不需要编辑makefiles。只需覆盖命令行上的变量:
$ cat Makefile
CFLAGS = -g -Wall
all:
echo $(CFLAGS)
$ make
echo -g -Wall
-g -Wall
$ make CFLAGS=-Wall
echo -Wall
-Wall
您可以通过添加-g0
来否定-g
的效果。说
gcc -g -g0 foo.c -o file.o
将产生一个二进制,与通过以下方式获得的二进制相同:
gcc foo.c -o foo.o
引用mangcc
:
-glevel
...
Level 0 produces no debug information at all. Thus, -g0 negates
-g.
嗯,您可以编写一个名为mygcc的脚本,该脚本解析接收到的参数,去除不需要的参数,并调用gcc。然后使用mygcc作为编译器。我不为这个答案感到骄傲^^^但是CFLAGS是一条很长的线(大约100个选项,包括等等),我不知道CFLAGS应该是什么。我所知道的是我不喜欢它的地方,但我不知道如何修复它。