[英]When to use the -g flag to GCC
我试图迫使ValGrind告诉我程序有什么问题。 Internet上的每一份文档都说您必须向GCC提供-g
选项,但是没有一个文档说明您是在编译时还是在链接时 (或两者同时)使用此标志。 那是什么?
GNU ld文档说-g
将被忽略,因此传递它没有多大意义。 通常,您将-g
传递给gcc
(它实际上是整个编译过程的前端,而不仅仅是编译器),它将由它来处理。
GCC提供了-g标志来进行调试,因此您可以像下面那样考虑example.c的代码来编译程序:
#include <stdio.h>
/* Warning: This program is wrong on purpose. */
int main()
{
int age = 10;
int height;
printf("I am %d years old.\n");
printf("I am %d inches tall.\n", height);
return 0;
}
默认情况下,如果您使用make example
说,它将触发命令
cc example.c -o example
现在,您运行类似的命令
cc -g example.c -o example1
那么您会发现size of the file example1
的size of example
大于size of the file example1
的size of example
因为-g标志启用了调试信息。
运行valgrind时,不需要-g标志。 -g仅在编译过程中是必需的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.