g++:如果在 -O2 或 -O3 之前指定,-fno-omit-frame-pointer 是否有效

g++: Will -fno-omit-frame-pointer be effective if specified before -O2 or -O3?

本文关键字:-fno-omit-frame-pointer 有效 是否 如果 -O2 -O3 g++      更新时间:2023-10-16

我们有一个复杂的分层make文件系统,其中CXXFLAGS被附加到几个地方(单个库的几个单独的makefile(。

有一个主文件似乎包含在所有其他制作文件中。所以我在那里指定了-fno-omit-frame-pointer标志。

当我编译时,我看到上面的标志,然后我看到-O2.我的问题是,如果-O2标志设置-fomit-frame-pointer,最新的设置会生效吗?

使用 gcc/g++,您可以使用 -Q --help=optimizers 标志来找出启用的优化的确切集。

使用我的 gcc 版本,我得到:

$ gcc -Q --help=optimizers -O2 | fgrep omit-frame-pointer
-fomit-frame-pointer                [enabled]

$ gcc -Q --help=optimizers -fno-omit-frame-pointer -O2 | fgrep omit-frame-pointer
-fomit-frame-pointer                [disabled]

所以-O2似乎并没有覆盖之前的-fno-omit-frame-pointer.

无论如何,请检查您的环境。