-O3 尝试非常优化代码以提高性能。它包括所有优化 -O2 包括,以及更多。 另一方面,-Os 指示 GCC “优化大小”。它启用所有 不会增加可执行文件大小的-O2 优化,然后它还切换一些优化标志以进一步减小可执行文件大小。 请注意,我的描述故意含糊不清 - 阅读 GCC 文档以更深入地讨论究竟为任一优化级别启用了哪些标志...
在研究编译驱动的makefile的时候,发现GCC的命令行里面有一个-Os的优化选项。 遍查GCC文档,发现了-O0, -O1, -O2, -O3,就是没有发现-Os。 祭出GOOGLE***搜了一下,终于发现这篇文章说明了-Os的作用: http://www.linuxjournal.com/article/7269 原来-Os相当于-O2.5。是使用了所有-O2的优化选项,但又不缩...
级的优化。使用-Os 是不推荐的。 ◼ -O3: 打开所有 -O2 的优化选项并且增加 -finline-functions, -funswitch-loops,- fpredictive-commoning, -fgcse-after-reload and -ftree-vectorize 优化选项。这是最高最危险 的优化等级。用这个选项会延长编译代码的时间,并且在使用 gcc4.x 的系统里不应全局 启用。
arm-hisiv100nptl-linux-gcc 编译后不同级别(默认,O0, O1, O2, O3, Os)可执行文件大小对应的结果: strip之前: yinguicai@Cpl-IBP-Product:~/data/tmp/time/tmp$ ll 总用量 80 drwxrwxr-x 2 yinguicai yinguicai 4096 12月 13 09:53 ./ drwxrwxr-x 3 yinguicai yinguicai 4096 12月 13 09:...
GCC 4.6.4以上版本,有**-O0、-O1、-O2、-O3、-Os、-Ofast、-Og**几个优化等级,参数 -O1、-O2、-O3 中,随着数字变大,代码的优化程度也越高,不过这在某种意义上来说,也是以牺牲程序的可调试性为代价的。 所有的优化选项如下: -faggressive-loop-optimizations -falign-functions[=n] ...
-O3: 最高的优化级别,宁愿牺牲空间来提升程序的执行速度 -Og: 主要使用-O1优化, 除了那些影响调试的部分 -Os: 侧重于优化文件的体积 注意: 这里优化通常不是压缩可执行文件的大小,指的是优化运行速度等,优化得到的可执行文件体积可能还更大
这意味着 -O3 会给你一个快速的可执行文件,但它可能会相当大,而 -Os 会给你一个较小的可执行文件,但它可能会更慢。 空间和时间效率通常是一种权衡。更快的算法往往会占用更多空间,而就地算法(不增加空间使用的算法)往往效率较低。 通常现代计算机有足够的内存空间,所以 -O3 通常更可取。但是,如果您正在为...
-O3:高优化,包含更多的编译时间与优化选项 -Os:优化代码以减小生成文件的大小 -Ofast:激进的优化,包括某些不严格遵守标准的优化 13. gcc -g 生成调试信息,用于调试器(如 gdb)调试时使用。这个选项不会影响程序的优化级别; 14. gcc -Wall 启用大多数有用的警告,用来检测代码中的潜在问题; ...
大家经常在编译代码时通常会使用一些gcc flags,今天这篇文章来梳理一下一些比较重要的gcc flag。 1.优化flag 优化标志用于提高编译代码的性能。这些标志可以加速编译过程并生成高效的程序。 一些常用的优化标志包括: -O1、-O2、-O3、-Os:这些标志控制应用的优化级别。
编译优化也是编译器的重要功能,适当的编译优化能大大加速程序的执行效率。gcc提供了4级优化参数,分别是-O0、-O1、-O2、-O3。一般来说,数字越大,所包含的编译优化策略就越多。此外,gcc还提供了特殊的-Os参数。 -O0参数表示不使用任何优化策略,是gcc默认的优化参数。因为没有使用任何优化策略,编译得到的机器码与...