> CentOS > CentOS教程 >

Centos极限优化之gcc

前面我们介绍了很多linux系统优化的技巧,这里我们还可以继续榨干机器的性能,就是我们手动编译内核,应用程序的基础gcc(注意:clang/llvm不考虑,基本上性能和gcc相差不了多少,只是freebsd讨厌gcc的版权才搞的短时间不考虑)。

如今的gcc已经到4.7.1了,首先我们来安装gcc吧:
1,下载gcc-4.7.1-20120825.tar.bz2,然后解压,还需要下载安装libgmp3-dev libmpfr-dev  libmpc-dev flex bison zlib readline automake autoconfig cmake zlib1g-dev 很多软件在你aptitude install build-essential kernel-package 等内河编译环境是已经安装了
2,mkdir gcc-build编译目录 并进入cd gcc-build
3,../gcc-4.7.1*/configure
--prefix=/usr \
--libexecdir=/usr/lib \
--enable-shared \  
--enable-threads=posix \
--enable-__cxa_atexit \  
--enable-clocale=gnu \
--enable-languages=c,c++ \  
--disable-multilib \
--disable-bootstrap \
--with-system-zlib \
--build=x86_64-linux-gnu \
--enable-lto \
--with-cpu=athlon64 \
注意:1,这里我们开启了最新的lto优化,支持linux内核编译,以后所有的编译都会使用lto优化,会自动分配几个进程来编译,也可以自己定义进程数量使用-flto=n来设置,可以提高程序5%左右的性能,不过可能带来编译时间的大幅度提高 特别是php编译5.2.X。
            2,我们关闭了多平台32 64支持disable-multilib,所有不用安装gcc-mulitlib否则要安装。
            3,修改gcc-build产生的Makefile 把所有的 -g 全部去掉呵呵,默认系统自带的gcc,cpp等才250K如果不去调试gcc4.7.1的gcc .cpp要1.7M恐怖,去掉以后才520K左右!
好了安装完成后,把/usr/bin下面原来的gcc cpp c++ g++连接改为 ln -s /usr/gcc*/bin/gcc gcc.........................之后我们就可以编辑/etc/profile。加入CFLAGS=' -O2 -pipe -march=athlon64 -fomit-frame-pointer(其实开启O2就已经开启了,怕有些系统要专门制定)。没有必要我们不需要开启O3级别,很容易出错。改好了之后就是source profile生效了。
不过建议大家不要太在意gcc的性能提高,特别是对于内核编译到底使用O2 还是Os各大发行版本不一样rhel ,centos等是使用的O2 debian 使用的是Os本人建议如果编译内核还是改为Os把对于主线内核,或者debian内核,rhel还是O2把,这类发行版对内核修改还是很大的,基本脱离了标准的主线内核。。。。。至于O3甚至是Ofast级别,基本上如果大家不是疯子还是不要整,整了也白搭看不出效果而且搞不好还会降低性能,出错。。。。
   以上测试都是在debian6.0.5进行,请大家谨慎参考,部署出错与本人无关,追求卓越,永无止境!
最后附上最新力作,精简的debian内核2.6.32配置文件,以供大家在vps发挥linux极限性能http://down.51cto.com/data/497058 编译以后内核大小为1.19M,比之前的2.4M减少了一半大小,此内核专门对虚拟环境(vm,如果是kvm请开启viro device)进行了优化,同时参考了linode vps内核配置文件,关闭了netfilter,lsm安全功能,基本上用,在vps下面开了也是死。


(责任编辑:IT)