比较常用的是-O2和-Os。详细的介绍请查看官网Optimize-Options。 1 -O0/-Og -O0是默认选项,不执行任何优化。在编译调试版本的时候,一般使用-O0,可以确保调试执行过程完全和代码一致(如果使用优化选项,根据源文件设定的断点和经过优化编译得到的程序可能对不上,所以不能准确停在预期的地方)。 -Og是针对调试的...
-O2: 是比O1更高级的选项,进行更多的优化。Gcc将执行几乎所有的不包含时间和空间折中的优化。当设置O2选项时,编译器并不进行循环打开()loop unrolling以及函数内联。与O1比较而言,O2优化增加了编译时间的基础上,提高了生成代码的执行效率。 O2打开所有的O1选项,并打开以下选项: l -fforce-...
GCC -O2, -O3, -Os 编译优化选项下,严格别名(strict aliasing)规则默认开启。 具体的各个编译优化等级的优化参数,参考如下 GCC 手册:Options That Control Optimization 默认情况下无论是在 GCC -O0, -O1 优化下开启 -fstrict-aliasing,还是开启 GCC -O2, -O3, -Os 优化,如果想让违反严格别名规则代码在编译...
开启-fno-strict-aliasing取消严格别名优化,修改 GCC -O2 导致的严格别名 Bug。 4.1.4 GCC 开启 -O2编译优化,避免严格别名 Bug 的方法 推荐处理顺序为从左到右: 改代码 > -fno-strict-aliasing > 不开 GCC -O2 优化 > -Wno-strict-aliasing (掩耳盗铃,强烈不建议) Linux 内核的做法是: 在开启 GCC -O...
-Os,类似于O2等级优化,但是不会为了让生成程序更小,不会应用使用导致代码字节增大的技术 典型指令, gcc -Wall -O3 -o circle circle.c curculararea.c -lncurses 6.2 -f控制优化细节 -f即flag。它可以单独使用或者再-O的基础上执行细节控制——添加或者取消某个特定的优化技术。
9. -O:优化选项。`-O` 后面可以跟数字 0、1、2、3 等,代表不同的优化级别。`-O0` 表示不进行优化,`-O1` 是基本优化,`-O2` 是中等程度优化,`-O3` 是最高程度的优化。优化可以提高程序的运行效率,但有时候可能会增加编译时间,并且在某些特殊情况下可能会导致一些奇怪的问题。©...
-Os,类似于O2等级优化,但是不会为了让生成程序更小,不会应用使用导致代码字节增大的技术 典型指令, gcc -Wall -O3 -o circle circle.c curculararea.c -lncurses 1. 6.2 -f控制优化细节 -f即flag。它可以单独使用或者再-O的基础上执行细节控制——添加或者取消某个特定的优化技术。
优化的方法不一而足,总体上将有以下几类:1)精简操作指令;2)尽量满足 cpu 的流水操作;3)通过对...
gcc 的参数 -Wall -O2 -ansi -Wall 生成所有警告信息 -o test (小写字母o)是说输出为test -ansi 是使用c++98标准去编译代码。 关闭gnu c中与ansi c不兼容的特性,激活ansi c的专有特性(包括禁止一些asm inline typeof关键字,以及UNIX,vax等预处理宏)...