gcc编译选项优化问题
正文 为了满足不同用户不同程度的优化需要,gcc提供了近百种优化选项,用来对编译时间,目标文件长度,执行效率这三方面进行不同的取舍和平衡。简单来说就是gcc提供了从O0-O3以及Os这几种不同的优化级别供用户选择,在这些选项中,包含了大部分有效的编译优化选项,并且可以在这个基础上,对某些选项进行屏蔽或添加,从而大大降低了使用的难度。下面围绕这几个不同级别的优化选项进行简单介绍 -O0:默认的编译选项,不做任何优化 -O和-O1:对程序做部分编译优化,对于大函数,优化编译占用稍微多的时间和相当大的内存。使用该选项,编译器会尝试减小生成代码的尺寸,以及缩短执行时间,但并不执行需要占用大量编译时间的优化。 -O2: 比 -O1更高级的选项,进行更多的优化。gcc将执行几乎所有的不包含时间和空间折中的优化。当设置O2选项时,编译器并不进行循环打开()loop unrolling以及函数内联。与O1比较而言,O2在优化增加了编译时间的基础上,提高了生成代码的执行效率。 -O3: 比O2更进一步的进行优化 -Os: 主要对程序的尺寸进行优化,打开了大部分O2优化中不会增加程序大小的优化选项,并对程....