现在的位置: 首页 > 综合 > 正文

GCC和G++编译优化的一些问题

2018年04月19日 ⁄ 综合 ⁄ 共 742字 ⁄ 字号 评论关闭

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

 

2static

此选项将禁止使用动态库,所以,编译出来的东西,一般都很大,也不需要什么动态连接库,就可以运行.

 

3-traditional

试图让编译器支持传统的C语言特性

 

4-Wall  warning all

显示所有的Warning

 

5-g

  只是编译器,在编译的时候,产生调试信息。

 

6-ansi

  关闭gnu c中与ansi c不兼容的特性,激活ansi c的专有特性(包括禁止一

asm inline typeof关键字,以及UNIX,vax等预处理宏,

 

 

抱歉!评论已关闭.