【ARM 嵌入式 编译系列 2.7 -- GCC 编译优化参数详细介绍】


在这里插入图片描述

GCC 编译优化概述

GCC(GNU Compiler Collection)包含了用于C、C++、Objective-C、Fortran、Ada和Go等语言的编译器。在编译过程中,GCC提供了多种优化选项,用于提高生成代码的性能,减少可执行文件的大小,或者在这两者之间寻求平衡。优化的方法不一而足,总体上将有以下几类:

  • 精简操作指令;
  • 尽量满足cpu的流水操作;
  • 通过对程序行为地猜测,重新调整代码的执行顺序;
  • 充分使用寄存器;
  • 对简单的调用进行展开等等。

GCC 提供了从O0-O3以及Os这几种不同的优化级别供大家选择,在这些选项中,包含了大部分有效的编译优化选项,并且可以在这个基础上,对某些选项进行屏蔽或添加,从而大大降低了使用的难度。以下是GCC编译优化的详细介绍:

常用优化等级

  • -O0: 不做任何优化,这是默认的编译选项。

    • 不进行优化。
    • 编译速度最快。
    • 通常用于调试,因为它保留了所有的调试信息并且每一行代码都可以直接对应到生成的机器代码。
  • -O1

    • 启用基本优化。
    • 尝试减少代码大小和执行时间,不会显著增加编译时间。
    • 可用于提高程序性能同时保持较好的编译速度。
  • -O2

    • 进行进一步优化。
    • 包含几乎所有不涉及空间-时间权衡的优化。
    • 通常为发布版本推荐的优化级别。
  • -O3

    • 启用更多的优化,包括-O2中的优化以及其他提高性能的优化。
    • 可能会使得编译出来的程序体积变大。
    • 适用于对性能要求极高的程序。
  • -Os

    • 优化生成的代码大小。
    • 执行适合在代码大小和执行时间之间进行权衡的所有优化。
  • -Ofast

    • 最大程度优化性能。
    • 启用所有-O3的优化,并进一步放宽标准的限制来提升性能。
    • 可以导致不符合标准的行为,需要谨慎使用。

开启所有优化,针对

最近更新

  1. TCP协议是安全的吗?

    2024-02-06 05:48:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-06 05:48:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-06 05:48:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-06 05:48:03       18 阅读

热门阅读

  1. SpringBoot+Slf4j+Logback日志记录方案

    2024-02-06 05:48:03       31 阅读
  2. git的奇特知识点

    2024-02-06 05:48:03       29 阅读
  3. 各种编程语言送祝福:2024龙年大吉

    2024-02-06 05:48:03       32 阅读
  4. STM32_CAN调试模式解释:静默、回环、静默回环

    2024-02-06 05:48:03       36 阅读
  5. 使用Oracle数据库创建定时任务的方法

    2024-02-06 05:48:03       27 阅读
  6. 转换函数

    2024-02-06 05:48:03       31 阅读
  7. [Python进阶] 数据处理:Numpy入门

    2024-02-06 05:48:03       28 阅读
  8. 蓝桥杯刷题--python-1

    2024-02-06 05:48:03       39 阅读
  9. 初始化整形数组,后从小到大冒泡排序

    2024-02-06 05:48:03       34 阅读
  10. 基于单片机的LED显示系统

    2024-02-06 05:48:03       30 阅读