Electronic Joint Business

Solution for E-Business

GCC 4.6.0 编译优化选项

应该谨记在心的是,:“使用编译器优化得到的小幅度性能提升,与它带来的风险相比微不足道” — 源自 LFS-Book. 追求极致的优化是一件既耗时又麻烦的事情,你会陷入无止尽的测试、测试、再测试…所以优化应当适可而止为好,将精力留出来用在程序算法的优化上会有更有意义。此本文的主旨是针对 GCC 4.6.0 的优化选项给出一个完整和清晰的脉络,仅仅作为参考。 GCC 编译的基本过程 在 Unix 环境下(包括 Unix、Linux、MSYS 和 Cygwin 等等),软件源代码大多提供了 configure 脚本,该脚本一般都会有许多配置选项,其中有不少选项是与性能息息相关的。对于每个特定的软件包,在编译前应该使用 configure –help 查看所有选项,并精心选择有关选项。运行 configure 脚本后会生成有关项目的 Makefile。将源代码编译为二进制文件是在 Makefile 文件的指导下,由 make 程序调用一条条编译命令完成的。而将源代码编译为二进制文件又需要经过以下四个步骤:预处理(cpp) → 编译(gcc或g++) → 汇编(as) → 连接(ld) ;括号中表示每个阶段所使用的程序,它们分别属于 GCC 和 Binutils 软件包。 尽管将源代码编译为二进制文件的四个步骤由不同的程序( cpp,gcc/g++,as,ld)完成,但是事实上 cpp, as, ld 都是由 gcc/g++ 进行间接调用的。换句话说,控制了 gcc/g++ 就等于控制了所有四个步骤。 显然的,优化应当从编译工具自身的选择以及控制编译工具的行为入手。本文以 Binutils-2.21.1 和 GCC-4.6.1为例进行说明。 编译选项 […]

,

Comments are currently closed.