Linux下C编程基础之:gcc编译器
(4)优化选项。
gcc可以对代码进行优化,它通过编译选项“-On”来控制优化代码的生成,其中n是一个代表优化级别的整数。对于不同版本的gcc来讲,n的取值范围及其对应的优化效果可能并不完全相同,比较典型的范围是从0变化到2或3。
不同的优化级别对应不同的优化处理工作。如使用优化选项“-O”主要进行线程跳转(ThreadJump)和延迟退栈(DeferredStackPops)两种优化。使用优化选项“-O2”除了完成所有“-O1”级别的优化之外,同时还要进行一些额外的调整工作,如处理器指令调度等。选项“-O3”则还包括循环展开和其他一些与处理器特性相关的优化工作。
虽然优化选项可以加速代码的运行速度,但对于调试而言将是一个很大的挑战。因为代码在经过优化之后,原先在源程序中声明和使用的变量很可能不再使用,控制流也可能会突然跳转到意外的地方,循环语句也有可能因为循环展开而变得到处都有,所有这些对调试来讲都将是一场噩梦。所以笔者建议在调试的时候最好不使用任何优化选项,只有当程序在最终发行的时候才考虑对其进行优化。
(5)体系结构相关选项。
gcc的体系结构相关选项如表3.10所示。
表3.10 gcc体系结构相关选项列表
选项 |
含义 |
-mcpu=type |
针对不同的CPU使用相应的CPU指令。可选择的type有i386、i486、pentium及i686等 |
-mieee-fp |
使用IEEE标准进行浮点数的比较 |
-mno-ieee-fp |
不使用IEEE标准进行浮点数的比较 |
-msoft-float |
输出包含浮点库调用的目标代码 |
-mshort |
把int类型作为16位处理,相当于shortint |
-mrtd |
强行将函数参数个数固定的函数用retNUM返回,节省调用函数的一条指令 |
这些体系结构相关选项在嵌入式的设计中会有较多的应用,读者需根据不同体系结构将对应的选项进行组合处理。在本书后面涉及具体实例时将会有针对性的讲解。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)linux相关文章:linux教程
c++相关文章:c++教程
评论