首页 文章

隐形GCC优化标志?

提问于
浏览
1

我正在使用 GCC 4.4.2 构建一些大型项目 . 由于我想构建它以供发布,我使用 -O1 GCC优化标志,但不幸的是它以某种方式与我的代码混淆,并且最终的二进制文件不能按预期工作,当使用 -O0 标志(或没有优化)构建时一切正常 . 之前我的项目遇到了类似的问题,那时 -fstrict-aliasing 标志在 -O2 优化级别上引起了麻烦,我设法发现它是由该特定标志引起的,通过搜索此处提到的所有标志文档,关于 -O2 优化级别:

http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Optimize-Options.html

现在我尝试对他们提到的关于 -O1 标志的列表做同样的事情,但不幸的是,似乎并非所有提到的标志,或者有一些隐藏的标志被启用,因为当我只使用 -O1 标志或仅使用列表进行编译时提供的标志(没有放 -O1 本身)我得到不同的编译结果,我的二进制文件拒绝只使用特定的 -O1 标志,所以我找不到确切的故障排除选项 .

是否有可能知道 -O1 选项包含哪些隐藏选项,以及如何禁用其中一些选项?

1 回答

  • 0

    您可以在小型C文件上运行 gcc -Q -v 以使GCC转储正在使用的选项 . 使用和不使用 -O1 选项运行它以获取启用选项之间的差异 .

相关问题