c - 不可见的 GCC 优化标志?

标签 c gcc optimization

我正在使用 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 选项包含哪些隐藏选项,以及如何禁用其中的一些选项?

最佳答案

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

关于c - 不可见的 GCC 优化标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21218231/

相关文章:

mysql - SQL:如何优化单个表上的多个 SELECT

hibernate - 如何避免 HQL 和 Criteria 中不必要的选择和连接

c - 出现错误 "In function ' _start' : (. text+0x20): 对 `main' 的 undefined reference “无法使用类似问题的答案来解决

c - 引用结构体值,但不断出现很多错误

c - 为什么 gcc 在返回指向局部变量的指针时抛出警告,而不是在返回局部变量时抛出警告?

c - 为什么不能使用 ** 获取 pthread_join 的返回值

c++ - 循环地址对齐如何影响 Intel x86_64 上的速度?

javascript - 为 Chrome 优化 jquery 选择器

c++ - 无法在 linux ubuntu 20.04 中安装 libgraph

C程序不退出输入模式