当前位置: 首页 > 知识库问答 >
问题:

不可见的GCC优化标志?

韦望
2023-03-14

我正在使用GCC4.4.2构建一些大型项目。因为我想构建它以供发布,所以我使用了-O1GCC优化标志,但不幸的是,它在某种程度上弄乱了我的代码,最终的二进制文件没有按照预期工作,当使用-O0标志(或没有优化)构建时,一切都很好。我之前的项目也有类似的问题,当时是-fstrict aliasing标志在-O2优化级别上造成了问题,我通过搜索本文档中提到的所有标志,就-O2优化级别而言,设法发现它是由该特定标志引起的:

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

现在我试着对他们提到的关于-O1标志的列表做同样的事情,但不幸的是,似乎并不是所有提到的标志,或者有一些隐藏的标志被启用,因为当我只使用-O1标志或只使用提供的标志列表(不放置-O1本身)编译时,我会得到不同的编译结果,我的二进制文件拒绝只使用特定的-O1标志,因此我找不到确切的麻烦制造选项。

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

共有1个答案

习华灿
2023-03-14

您可以在一个小的C文件上运行gcc-Q-v,让gcc转储正在使用的选项。在使用和不使用-O1选项的情况下运行它,以获得已启用选项之间的差异。

 类似资料:
  • 存在与循环有关的问题。为什么?也许是虫子? 我使用的是最新的4.8.0,经过测试的x64、x86以及其他版本。都是同样的行为。

  • 我有一个项目,我尝试为微控制器构建固件,并尝试更好地控制使用的优化标志。我想要,而不是使用

  • 问题内容: 我正在尝试在中创建函数并从中创建实例。问题是我在文件中看不到它,并且在初始化时找不到该函数。我有一个定义如下的函数: 我什至尝试放入推杆,但再次出现相同的错误。还有什么我想念的吗?如何使构造函数对代码可见? 我为此阅读以下内容: https://developer.apple.com/library/ios/documentation/swift/conceptual/swift_pr

  • 问题内容: 在我的JTable中不可见的列标题我已经创建了一个JPanel并将JTable添加到JPanel中。 问题答案: JTable的API指出: “请注意,如果希望在独立视图(JScrollPane外部)中使用JTable并希望显示标题,则可以使用getTableHeader()获取它并单独显示它。” 或者只是将表添加到滚动窗格,然后将滚动窗格添加到面板…

  • 这是一个使用ValArray的简单c程序: 如果我像这样编译并运行它: 产出如预期: 但是,如果我像这样编译和运行它: 输出为: 如果使用优化参数,也会发生同样的情况。 GCC版本是(Archlinux最新版本): 但是,如果我尝试叮当,两者 和 产生相同的正确结果: clang版本是: 我还尝试了在Debian上使用GCC 4.9.2,其中可执行文件会产生正确的结果。 这是GCC中可能存在的错误

  • 我正在使用GCC为ARM开发一个C。我遇到了一个问题,我没有启用优化,我无法为我的代码创建二进制(ELF),因为它不适合可用空间。然而,如果我只是启用调试优化(-Og),这是我所知的最低优化,代码很容易适合。 在这两种情况下,都启用了-ffunction-节、-fdata-节、-fno-异常和-Wl、--gc-节。 闪存大小:512 kB 没有优化:. text溢出约200 kB 使用-Og优化: