程序减肥三步走
对于设计嵌入式linux系统的研发人员来说,有一个问题是必须要考虑到的,那就是存储器的空间. 【程序编程相关:建立檢查使用者Quota的網頁】 【推荐阅读:Apache Rewrite】我们知道嵌入式linux系统所用的存储器不是软磁盘.硬盘.zip盘.cd-rom.dvd这些众所周知的大容量常规存储器,它使用的是例如rom,compactflash,m-systems的diskonchip,sony的memorystick,ibm 的microdrive等体积极小,与主板上的bios大小相近,存储容量很小的存储器.所以怎样尽可能的节省空间就显的很重要. 【扩展信息:Linux 磁碟配額( Quota )】 嵌入式系统的存储器中放置的无非是内核,文件系统,软件,以及自己开发的程序.本文就从程序入手,以一个非常简单的c程序来作为例子,通过三步来让它减肥. hello.c: #include int main () { printf ("hello,world"); return 0; } 我们先用正常的编译方法来编译,看看生成的程序的大小是多少 #gcc –o hello hello.c #ls –l hello -rwxr-xr-x 1 root root 11542 nov 13 20:07 hello 从结果可以看到正常编译后的程序大小是11542byte 现在开始我们的三步减肥,看看到底效果如何. 步骤一:用gcc 的代码优化参数 代码优化指的是编译器通过分析源代码,找出其中尚未达到最优的部分,然后对其重新进行组合,目的是改善程序的执行性能.gcc提供的代码优化功能非常强大,它通过编译选项-on来控制优化代码的生成,其中n是一个代表优化级别的整数.对于不同版本的gcc来讲,n的取值范围及其对应的优化效果可能并不完全相同,比较典型的范围是从0变化到2或3. 编译时使用选项-o可以告诉gcc同时减小代码的长度与执行时间,其效果等价于-o1.在这一级别上能够进行的优化类型虽然取决于目标处理器,但一般都会包括线程跳转(thread jump)与延迟退栈(deferred stack pops)两种优化.选项-o2告诉gcc除了完成所有-o1级别的优化之外,同时还要进行一些额外的调整工作,如处理器指令调度等.选项-o3则除了完成所有-o2级别的优化之外,还包括循环展开与其它一些与处理器特性相关的优化工作.通常来说,数字越大优化的等级越高,同时也就意味着程序的运行速度越快.许多linux程序员都喜欢使用-o2选项,因为它在优化长度.编译时间与代码大小之间,取得了一个比较理想的平衡点.... 下一页