何时使用-g标志到GCC

时间:2014-01-20 12:53:17

标签: c++ gcc

我正试图强迫ValGrind告诉我我的程序有什么问题。互联网上的每一丝文档都说你必须向GCC提供-g选项,但是没有一个文件说明你是否需要编译时链接时间(或两者)。那是哪个?

2 个答案:

答案 0 :(得分:3)

GNU ld文档说-g将被忽略,因此传递它没有多大意义。通常,您将-g传递给gcc(它实际上是整个编译过程的前端,而不仅仅是编译器),它会处理它。

答案 1 :(得分:0)

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 因为-g标志启用了调试信息。

运行valgrind时不需要-g标志。 -g仅在编译过程中需要。