GCC G++ 编译优化选项问题
(由于编译的选项很多,我们实际在用的时候只是其中很少的一部分,因此,这里只列举几个具有代表性的选项说一下。说是几个,其实也是比较全了)
一、编译优化选项
1、-O0
-O1
-O2
-O3
编译时使用选项-O可以告诉GCC同时减小代码的长度和执行时间,其效果等价于-O1。在这一级别上能够进行的优化类型虽然取决于目标处理器,但一般都会包括线程跳转(Thread Jump)和延迟退栈(Deferred Stack Pops)两种优化。选项-O2告诉GCC除了完成所有-O1级别的优化之外,同时还要进行一些额外的调整工作,如处理器指令调度等。选项-O3则除了完成所有-O2级别的优化之外,还包括循环展开和其它一些与处理器特性相关的优化工作。通常来说,数字越大优化的等级越高,同时也就意味着程序的运行速度越快。
注意:O3少用,有的时候 -O3 会出来一些意想不到的问题
(编译的优化有限,最好从源代码上优化)
例如: gcc -Wall -O0 test.c -o testo0
gcc -Wall -O3 test.c -o testo3
2、static
此选项将禁止使用动态库,所以,编译出来的东西,一般都很大,也不需要什么动态连接库,就可以运行.
3、-traditional
试图让编译器支持传统的C语言特性
4、-Wall (warning all)
显示所有的Warning
5、-g
只是编译器,在编译的时候,产生调试信息。
6、-ansi
关闭gnu c中与ansi c不兼容的特性,激活ansi c的专有特性(包括禁止一
些asm inline typeof关键字,以及UNIX,vax等预处理宏,