我们有一个复杂的层次化make文件系统,其中CXXFLAGS被附加在多个位置(各个库的多个单独的makefile)。有一个主文件似乎被包含在了其他的make文件中,所以我在这里指定了-fno-omit-frame-pointer标志。当我编译的时候,我看到了上面的标志,然后我看到了-O2。我的问题是,如果-O2标志设置了-fomit-frame-pointer,最新的设置会生效吗?
CXXFLAGS
-fno-omit-frame-pointer
-O2
-fomit-frame-pointer
lskq00tm1#
使用gcc/g++,您可以使用-Q --help=optimizers标志来找出启用的确切优化集。用我的gcc版本我得到:
-Q --help=optimizers
$ 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。不管怎样,检查一下你的环境。
1条答案
按热度按时间lskq00tm1#
使用gcc/g++,您可以使用
-Q --help=optimizers
标志来找出启用的确切优化集。用我的gcc版本我得到:
以及
因此
-O2
似乎不会覆盖以前的-fno-omit-frame-pointer
。不管怎样,检查一下你的环境。