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

brc7rcf0  于 2023-02-01  发布在  其他
关注(0)|答案(1)|浏览(131)

我们有一个复杂的层次化make文件系统,其中CXXFLAGS被附加在多个位置(各个库的多个单独的makefile)。
有一个主文件似乎被包含在了其他的make文件中,所以我在这里指定了-fno-omit-frame-pointer标志。
当我编译的时候,我看到了上面的标志,然后我看到了-O2。我的问题是,如果-O2标志设置了-fomit-frame-pointer,最新的设置会生效吗?

lskq00tm

lskq00tm1#

使用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
不管怎样,检查一下你的环境。

相关问题