比较常用的是-O2和-Os。详细的介绍请查看官网Optimize-Options。 1 -O0/-Og -O0是默认选项,不执行任何优化。在编译调试版本的时候,一般使用-O0,可以确保调试执行过程完全和代码一致(如果使用优化选项,根据源文件设定的断点和经过优化编译得到的程序可能对不上,所以不能准确停在预期的地方)。 -Og是针对调试的...
2. -O2 该优化选项会牺牲部分编译速度,除了执行-O1所执行的所有优化之外,还会采用几乎所有的目标配置支持的优化算法,用以提高目标代码的运行速度。 -fthread-jumps -falign-functions -falign-jumps -falign-loops -falign-labels -fcaller-saves -fcrossjumping -fcse-follow-jumps -fcse-skip-blocks -fdelete...
这些是 GCC(GNU Compiler Collection)优化编译选项,下面逐一解释它们的作用和用途: -falign-functions[enabled] 将函数的起始地址对齐到指定的边界。对齐函数可以提高性能,因为许多处理器对对齐的代码访问有更好的支持。 -falign-jumps[enabled] 将跳转指令对齐到指定的边界,通常可以提高分支预测的准确性,从而提高程序性...
2. -O1/-O2/-O3:进行不同级别的优化。使用这些参数可以开启GCC的优化功能,并指定不同的优化级别,从-O1到-O3,优化级别逐渐增强。 四、警告参数 1. -Wformat:检查格式化字符串。使用该参数可以让GCC检查printf等函数的格式化字符串是否符合要求,避免格式化字符串导致的安全问题。 2. -Wuninitialized:检查未初始化...
-Os:这个等级用来优化代码尺寸。其中启用了-O2中不会增加磁盘空间占用的代码生成选项。这对于磁盘空间极其紧张或者CPU缓存较小的机器非常有用。但也可能产生些许问题,因此软件树中的大部分ebuild都过滤掉这个等级的优化。使用-Os是不推荐的。 https://blog.csdn.net/qq_31108501/article/details/51842166...
一般来说,调试时不优化,一般的优化选项用-O2(gcc允许-g与-O2联用,这也是GNU软件包发布的默认选项),embedded可以考虑-Os。 注意:此处为O!(非0或小写的o,-o是指定可执行文件名)。 检验优化结果的方法:$time ./prog time测量指定程序的执行时间,结果由三部分组成: ...
$ gcc-O2-c-o sub.o sub.c $ gcc-o test main.o sub.o 2.7 链接器选项(Linker Option) 下面的选项用于链接 OBJ 文件,输出可执行文件或库文件。 (1)object-file-name 如果某些文件没有特别明确的后缀(a special recognized suffix),GCC 就认为他们是 OBJ 文件或库文件(根据文件内容,链接器能够区分 OBJ...
O2:包含-O1的优化并增加了不需要在目标文件大小和执行速度上进行折衷的优化。编译器不执行循环展开以及函数内联。会尝试更多的寄存器级的优化以及指令级的优化,它会在编译期间占用更多的内存和编译时间。大多数情况下,推荐使用 O2 这一级优化选项就足够了。
-O2: 进一步优化。 -O3: 比 -O2 更进一步优化,包括 inline 函数。 -shared: 生成共享目标文件。通常用在建立共享库时。 -static: 禁止使用共享连接。 -UMACRO: 取消对 MACRO 宏的定义。 -w: 不生成任何警告信息。 -Wall: 生成所有警告信息。