编译使用GNU make启用分析的包

时间:2014-11-10 23:31:45

标签: c gcc makefile profiling

我正在尝试编译一个启用了代码分析的大包(Heasoft)。该软件包使用makefile进行设置。 我正在使用(gcc)" -pg"支持分析的编译。通过CFLAGS标志:

$ CFLAGS="-pg" make

编译一直运行,直到引发不兼容的标志之间出现以下错误:

gcc: error: -pg and -fomit-frame-pointer are incompatible

我打算怎么处理它? (鉴于我对分析包提供的一些工具感兴趣,我会问下面更客观的问题,希望它们能够更容易回答)

  • 这是什么" omit-frame-pointer"它真的需要吗?
  • 我可以说GNU make避免这种冲突,忽略命令行(在这种情况下" -pg")标志?
  • 我可以告诉GNU make我想启用哪些代码(工具)分析(" -pg")标志?

感谢。

1 个答案:

答案 0 :(得分:2)

"省略帧指针"确切地说 - 它指示编译器frame pointer保存到CPU寄存器中,如果编译器检测到该函数不需要它(例如因为它没有参数,所以不会影响堆栈)。这为每次通话节省了一点时间。它还释放了一个寄存器,然后可以用于进一步的优化。

另一方面,跟踪函数变得不可能,因此要启用调试或分析,您需要明确地恢复它。

为此,请将-fno-omit-frame-pointer添加到调试标志。

您可能还必须使用-O0标志禁用所有代码优化。