我正在使用 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
标志的列表做同样的事情,但不幸的是,似乎并非所有提到的标志,或者有一些隐藏的标志被启用,因为当我用just编译时-O1
标志或只提供标志列表(不放-O1
本身)我得到不同的编译结果,我的二进制文件拒绝只使用特定的-O1
标志,所以我找不到确切的麻烦选择。
是否可以知道-O1
选项包含哪些隐藏选项,以及如何禁用其中一些选项?
答案 0 :(得分:1)
您可以在小型C文件上运行gcc -Q -v
以使GCC转储正在使用的选项。
使用和不使用-O1
选项运行它以获取已启用选项之间的差异。