-O3: 最高的优化级别,宁愿牺牲空间来提升程序的执行速度 -Og: 主要使用-O1优化, 除了那些影响调试的部分 *-Os: 侧重于优化文件的体积 注意: 这里优化通常不是压缩可执行文件的大小,指的是优化运行速度等,优化得到的可执行文件体积可能还更大 优化的必然代价就是编译时间更长,执行逻辑与源代码不再逐行对...
-Os:针对程序空间大小优化(多用于嵌入式系统)。 -Os使能-O2中除去会增加程序空间的所有优化参数。同时-Os还会执行更加优化程序空间的选项。 -Os会关闭以下优化选项: 关于GCC编译的优化选项一共有-O0(默认),-O1,-O2,-O3及-Os五个参数。 各个参数优选内容如上所示。 但是各个优化内容到底是指什么那?继续分析。
O2:常用的发布优化选项,在O1的基础上额外打开了四十多个优化选项,包括自动内联等规则 Os:产生较小代码体积的优化选项(比O2更保守) O3:较为激进的优化选项(对错误编码容忍度最低),在O2的基础上额外打开了十多个优化选项 Ofast:打开可导致不符合IEEE浮点数等标准的性能优化选项。 具体介绍如下: O0 编译器默认就...
PROJECT(目标名称) ADD_DEFINITIONS(-g) 添加了之后,就相当于在编译的时候加上了 -g选项 ADD_DEFINITIONS(-Os) 添加了之后,就相当于在编译的时候加上了 -Os选项 ADD_DEFINITIONS(-D DEBUG_WARN) 将在gcc命令行添加DEBUG_WARN宏定义 SET(CMAKE_CXX_FLAGS "") 编译器选项设置 SET(CMAKE_SHARED_LIBRARY_LINK...
GCC -O 选项 这个选项控制所有的优化等级。使用优化选项会使编译过程耗费更多的时间,并且占用更多的内存,尤其是在提高优化等级的时候。-O设置一共有五种:-O0、-O1、-O2、-O3和-Os。让我们来逐一考察各个优化等级:-O0:这个等级(字母“O”后面跟个零)关闭所有优化选项
-O0, -O1, -O2, -O3, -Os: 这些标志用于控制代码优化级别。-O0 表示不进行优化,而 -O1、-O2、-O3 和 -Os 表示递增的优化级别,其中 -O3 是最高级别的优化。较高的优化级别可能会产生更高效的代码,但也可能导致编译时间增加。 -lgmp: 这个标志用于链接 GMP(GNU Multiple Precision Arithmetic Library,...
-Os:优化代码大小,适用于内存受限的环境。 应用场景 生产环境:在部署到生产环境时,通常会选择-O2或-O3来提高性能。 嵌入式系统:在资源受限的嵌入式系统中,可能会选择-Os来优化代码大小。 可能遇到的问题和解决方法 问题:使用-O选项编译后,内核启动变慢或者出现不稳定现象。
优化选项控制编译器的优化级别。例如,-O0 不执行任何优化,适合调试版本;-O2 旨在提升性能并减小代码大小。而 -Os 专注于减小代码大小,-O3 则为最高优化等级,但可能带来稳定性风险。在实际开发中,应根据具体需求选择合适的优化级别。代码生成选项如 -fPIC 用于生成位置无关代码,适合用于构建共享库...
-O1优化级别对大型函数进行简化,但避免耗费大量时间的优化,开启如-fomit-frame-pointer和部分编译器特定选项。-O2进一步优化,但不执行循环展开和函数内联,以空间换取性能。-O3则执行更多优化,如内联函数、循环展开和更复杂的代码分析,适用于对性能要求极高的场景。特别关注的是-Os,它是针对空间优化...
-Os:专门优化目标文件大小,执行所有的不增加目标文件大小的-O2优化选项.并且执行专门减小目标文件大小的优化选项.-O3:打开所有-O2的优化选项并且增加 -finline-functions, -funswitch-loops,-fpredictive-commoning, -fgcse-after-reload and -ftree-vectorize优化选项.-O1包含的选项-O1通常可以安全的和调试的选项一...