我正在尝试编译一个启用了代码分析的大包(Heasoft)。该软件包使用makefile进行设置。 我正在使用(gcc)" -pg"支持分析的编译。通过CFLAGS标志:
$ CFLAGS="-pg" make
编译一直运行,直到引发不兼容的标志之间出现以下错误:
gcc: error: -pg and -fomit-frame-pointer are incompatible
我打算怎么处理它? (鉴于我对分析包提供的一些工具感兴趣,我会问下面更客观的问题,希望它们能够更容易回答)
感谢。
答案 0 :(得分:2)
"省略帧指针"确切地说 - 它指示编译器不将frame pointer保存到CPU寄存器中,如果编译器检测到该函数不需要它(例如因为它没有参数,所以不会影响堆栈)。这为每次通话节省了一点时间。它还释放了一个寄存器,然后可以用于进一步的优化。
另一方面,跟踪函数变得不可能,因此要启用调试或分析,您需要明确地恢复它。
为此,请将-fno-omit-frame-pointer
添加到调试标志。
您可能还必须使用-O0
标志禁用所有代码优化。