CentOS GCC升级

最近由于需求的原因,需要把目前gcc-4.4.4升级到gcc-4.6.1,考虑到有多台的原因,做了一个脚本自动安装结合批量工具分发。

一、安装环境
系统版本:centos6.0X64
原GCC版本:gcc-4.4.4
新GCC版本:gcc-4.6.1

二、安装方法一(自动安装)

连网环境下:

1. 获取gcc源码包

2. 解压

3. 进入解压后的文件,安装依赖文件:

./contrib/download_prerequisites

【主要是安装gmp, mpc,mpfr包】

4. 生成配置文件: ./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib (只编译64bit)

5. 编译安装: make & make install

6. 重启机器


三、安装方法二(手动安装)
1、下载安装的源码:
如下需要下载以下包:gcc-4.6.1.tar.bz2 gmp-4.3.2.tar.bz2 mpc-0.8.1.tar.gz mpfr-2.4.2.tar.bz2
下载地址如下:

wget ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-4.3.2.tar.bz2

wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gz

wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2
wget 
http://ftp.gnu.org/gnu/gcc/gcc-4.6.1/gcc-4.6.1.tar.bz2 即可!

2、解压安装:由于有依赖,安装有先后顺序:GMP、MPFR、MPC、GCC
安装GMP:  tar jxf gmp-4.3.2.tar.bz2 &&cd gmp-4.3.2/ ;./configure –prefix=/usr/local/gmp/ &&make &&make install

安装MPFR:  cd ../ ;tar jxf mpfr-2.4.2.tar.bz2 ;cd mpfr-2.4.2/ ;./configure –prefix=/usr/local/mpfr –with-gmp=/usr/local/gmp &&make &&make install

安装MPC:  cd ../ ;tar xzf mpc-0.8.1.tar.gz ;cd mpc-0.8.1 ;./configure –prefix=/usr/local/mpc –with-mpfr=/usr/local/mpfr –with-gmp=/usr/local/gmp

安装GCC:cd ../ ;tar jxf gcc-4.6.1.tar.bz2 ;cd gcc-4.6.1 ;./configure –prefix=/usr/local/gcc –enable-threads=posix –disable-checking –disable-multilib –enable-languages=c,c++ –with-gmp=/usr/local/gmp –with-mpfr=/usr/local/mpfr/ –with-mpc=/usr/local/mpc/
然后执行如下:export  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc/lib:/usr/local/gmp/lib:/usr/local/mpfr/lib/    

//这一步很关键,设置变量,不设置后面会报错。

注意:在命令行中执行上述命令,添加环境变量,在重启后会失效。

上述命令添加到文件/etc/bashrc 末尾,可以解决上述问题。

make && make install

安装完毕即可!然后做一个链接就可以使用GCC了

mkdir -p  /data/backup/`date +%Y%m%d`

mv /usr/bin/{gcc,g++}      /data/backup/`date +%Y%m%d`

新建软链接:

ln -s /usr/local/gcc/bin/gcc          /usr/bin/gcc

ln -s /usr/local/gcc/bin/g++          /usr/bin/g++

三、测试GCC
直接输入gcc -v 可以查看到gcc 版本为4.6.1和相关的编译参数就ok了!

 

 

 

附上一个最简单的安装脚本:

  1. #!/bin/sh 
  2. ##auto make install gcc 
  3. ##2012-07-03 
  4. tar jxf gmp-4.3.2.tar.bz2 &&cd gmp-4.3.2/ ;./configure –prefix=/usr/local/gmp/ &&make &&make install 
  5.  
  6. sleep 1 
  7. cd ../ ;tar jxf mpfr-2.4.2.tar.bz2 ;cd mpfr-2.4.2/ ;./configure –prefix=/usr/local/mpfr –with-gmp=/usr/local/gmp &&make &&make install 
  8.  
  9. cd ../ ;tar xzf mpc-0.8.1.tar.gz ;cd mpc-0.8.1 ;./configure –prefix=/usr/local/mpc –with-mpfr=/usr/local/mpfr –with-gmp=/usr/local/gmp &&make &&make install 
  10.  
  11. cd ../ ;tar jxf gcc-4.6.1.tar.bz2 ;cd gcc-4.6.1 ;./configure –prefix=/usr/local/gcc –enable-threads=posix –disable-checking –disable-multilib –enable-languages=c,c++ –with-gmp=/usr/local/gmp –with-mpfr=/usr/local/mpfr/ –with-mpc=/usr/local/mpc/ 
  12.  
  13. if 
  14. [ $? -eq 0 ];then 
  15. echo “This gcc configure is success” 
  16. else 
  17. echo “This gcc configure is failed” 
  18. fi 
  19. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc/lib:/usr/local/gmp/lib:/usr/local/mpfr/lib/ 
  20.  
  21. make && make install 
  22.  
  23. [ $? -eq 0 ]&&echo This is make install success 

注意: 本文档中,gcc安装在/usr/local/目录下,在编译某些大型程序时,可能会出现以下问题:

           1.  如在编译Gem5时,/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by build/ALPHA_SE/m5.opt). 主要原因是/usr/lib64/libstdc++.so.6仍然是旧版本gcc中的库,因此可以通过建立符号链接,ln -s /usr/local/gcc-4.4.6/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6

           2. error while loading shared libraries: libmpfr.so.4: cannot open shared object file: No such file or directory.  通过再次添加环境变量

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc/lib:/usr/local/gmp/lib:/usr/local/mpfr/lib/ 解决该问题。

本文转载自“烟雨楼台” 博客  http://wgkgood.blog.51cto.com/1192594/917632



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章