CentOS 6 升级 gcc

CentOS自带gcc是v4.4.6,在编译TokuDB时要求gcc >= 4.7

  1. 下载源码包(v4.8的编译方法也是一样的步骤)

    1
    wget http://ftp.gnu.org/gnu/gcc/gcc-4.9.0/gcc-4.9.0.tar.bz2
  2. 解压

    1
    tar -jxvf gcc-4.9.0.tar.bz2
  1. 下载编译所需的依赖项

    1
    2
    3
    cd gcc-4.9.0
    ./contrib/download_prerequisites
    cd ..
  2. 建立编译输出目录

    1
    mkdir gcc-build-4.9.0
  3. 进入此目录,执行以下命令,生成makefile文件

    1
    2
    cd gcc-build-4.9.0 
    ../gcc-4.9.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
  4. 执行命令进行编译

    1
    make -j4
  5. 安装

    1
    make install
  6. 检查gcc版本

    1
    2
    3
    4
    5
    6
    7
    8
    9
    [root@localhost home]# gcc -v
    使用内建 specs。
    COLLECT_GCC=gcc
    COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-unknown-linux-gnu/4.9.0/lto-wrapper
    目标:x86_64-unknown-linux-gnu
    配置为:../gcc-4.9.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
    线程模型:posix
    gcc 版本 4.9.0 (GCC)
    [root@localhost home]#
  7. 如果发现版本没有变化,远程连入的建议重连再试;新session下还是没有变化可以先进行版本切换,再尝试重连

    1
    update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/x86_64-unknown-linux-gnu-gcc 40

添加新GCC到可选项,倒数第三个是名字,倒数第二个参数为新GCC路径,最后一个参数40为优先级,设大一些之后就自动使用新版了。
由于编译时没有指定路径,我们可以尝试在默认路径/usr/local/bin下查找新命令的名称

1
2
3
4
5
6
7
8
9
10
[root@localhost home]# ls /usr/local/bin | grep gcc
gcc
gcc-ar
gcc-nm
gcc-ranlib
x86_64-unknown-linux-gnu-gcc
x86_64-unknown-linux-gnu-gcc-4.9.0
x86_64-unknown-linux-gnu-gcc-ar
x86_64-unknown-linux-gnu-gcc-nm
x86_64-unknown-linux-gnu-gcc-ranlib

参考:
http://blog.csdn.net/dyllove98/article/details/8917485
http://www.cnblogs.com/zhangtingkuo/archive/2013/04/06/3002982.html