c-使用GNU make编译具有评测功能的包



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

$ CFLAGS="-pg" make

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

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

我该怎么处理?(鉴于我只对该软件包提供的一些工具感兴趣,我提出了以下更客观的问题,希望它们能更容易地得到回答)

  • 这个"省略帧指针"是什么?它真的需要吗
  • 我可以对GNU说,为了避免这种冲突,忽略命令行(在本例中为"-pg")标志吗
  • 我可以告诉GNUmake我想要启用评测("-pg")标志的代码(工具)吗

谢谢。

"省略帧指针"正是这样做的——如果编译器检测到函数不需要帧指针(例如,因为它没有参数,因此不会影响堆栈),它会指示编译器不要将帧指针保存到CPU寄存器中。这样可以在每次通话中节省一点时间。它还释放了一个寄存器,然后可以用于进一步的优化。

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

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

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

最新更新