LinuxSky:让我们一起学习Linux。

GCC编译器选项及优化提示

  很多弟兄可能都很关心如何优化编译自己的程序,虽然本人不赞成"骨灰"玩法,却也不得不承认这是掌握gcc的绝佳途径;

  因此献上此帖,以供各位玩家参考,绝对原创噢 

  ============================

  大多数程序和库在编译时默认的优化级别是"2"(使用gcc选项:"-O2")并且在Intel/AMD平台上默认按照i386处理器来编译。

  如果你只想让编译出来的程序运行在特定的平台上,就需要执行更高级的编译器优化选项,以产生只能运行于特定平台的代码。

  一种方法是修改每个源码包中的Makefile文件,在其中寻找CFLAGS和CXXFLAGS变量(C和C++编译器的编译选项)并修改它的值。

  一些源码包比如binutils, gcc, glibc等等,在每个子文件夹中都有Makefile文件,这样修改起来就太累了!

  另一种简易做法是设置CFLAGS和CXXFLAGS环境变量。大多数configure脚本会使用这两个环境变量代替Makefile文件中的值。

  但是少数configure脚本并不这样做,他们必须需要手动编辑才行。

  为了设置CFLAGS和CXXFLAGS环境变量,你可以在bash中执行如下命令(也可以写进.bashrc以成为默认值):

  export CFLAGS="-O3 -march=" &&CXXFLAGS=$CFLAGS

  这是一个确保能够在几乎所有平台上都能正常工作的最小设置。

  "-march"选项表示为特定的cpu类型编译二进制代码(不能在更低级别的cpu上运行),

  Intel通常是:pentium2, pentium3, pentium3m, pentium4, pentium4m, pentium-m, prescott, nocona

  说明:pentium3m/pentium4m是笔记本用的移动P3/P4;pentium-m是迅驰I/II代笔记本的cpu;

  prescott是带SSE3的P4(以滚烫到可以煎鸡蛋而闻名);nocona则是最新的带有EMT64(64位)的P4(同样可以煎鸡蛋)

  AMD通常是:k6, k6-2, k6-3, athlon, athlon-tbird, athlon-xp, athlon-mp, opteron, athlon64, athlon-fx

  用AMD的一般都是DIYer,就不必解释了吧。

标签:优化 编译器选项 gcc
分类: 程序开发 | 发布: | 查看: | 发表时间:2007/12/07
分享按钮

相关文章

文章评论

站内资料部分由本人收集整理,所有文章版权均系原作者和出版者所有,如涉版权问题,恳请来信告知!