CentOS 7 安装gcc-5.4.0版本

由于centos7版本自带gcc是4.8.5版本。无法自动升级到高版本,所以只能手动更新。
CentOS 7 安装gcc-5.4.0版本_第1张图片

安装gcc5.4

需要下载gcc源码和对应的依赖:

gcc-5.4.0.tar.gz 安装包
http://ftp.gnu.org/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.gz

gmp-4.3.2.tar.bz2 gcc依赖包
ftp://ftp.gnu.org/gnu/gmp/gmp-4.3.2.tar.bz2

mpfr-2.4.2.tar.bz2 gcc依赖包
http://www.mpfr.org/mpfr-2.4.2/mpfr-2.4.2.tar.bz2

mpc-0.8.1.tar.gz gcc依赖包
http://www.multiprecision.org/downloads/mpc-0.8.1.tar.gz

上面三个依赖的版本依据可以将gcc-5.4.0.tar.gz解压后在gcc-5.4.0/contrib/download_prerequisites文件里面看到如下:

# Necessary to build GCC.
MPFR=mpfr-2.4.2
GMP=gmp-4.3.2
MPC=mpc-0.8.1

然后就是安装,如果不是root,安装时注意加sudo。

安装gmp-4.3.2
[root@localhost gcc-build]#tar -xjvf gmp-4.3.2.tar.bz2
[root@localhost gcc-build]#cd gmp-4.3.2
[root@localhost gcc-build]#mkdir gmp-build
[root@localhost gcc-build]#cd gmp-build

#执行配置 --prefix表示后面将要安装到的目标位置,下面一样

[root@localhost gcc-build]#../configure --prefix=/usr/local/gmp-4.3.2
[root@localhost gcc-build]#make
[root@localhost gcc-build]#make install
安装mpfr-2.4.2

安装mpfr依赖于gmp,所以应先安装gmp。

[root@localhost gcc-build]#tar -xjvf mpfr-2.4.2.tar.bz2
[root@localhost gcc-build]#cd mpfr-2.4.2
[root@localhost gcc-build]#mkdir mpfr-build
[root@localhost gcc-build]#cd mpfr-build
[root@localhost gcc-build]#../configure --prefix=/usr/local/mpfr-2.4.2 --with-gmp=/usr/local/gmp-4.3.2
[root@localhost gcc-build]#make
[root@localhost gcc-build]#make install
安装mpc-0.8.1.tar.gz
[root@localhost gcc-build]#tar -xzvf mpc-0.8.1.tar.gz
[root@localhost gcc-build]#cd mpc-0.8.1
[root@localhost gcc-build]#mkdir mpc-build
[root@localhost gcc-build]#cd mpc-build
[root@localhost gcc-build]#../configure --prefix=/usr/local/mpc-0.8.1 --with-gmp=/usr/local/gmp-4.3.2 --with-mpfr=/usr/local/mpfr-2.4.2
[root@localhost gcc-build]#make
[root@localhost gcc-build]#make install

添加环境变量

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/gmp-4.3.2/lib:/usr/local/mpc-0.8.1/lib:/usr/local/mpfr-2.4.2/lib
安装gcc-5.4.0
[root@localhost gcc-build]#tar -xzvf gcc-5.4.0.tar.gz
[root@localhost gcc-build]#cd gcc-5.4.0
[root@localhost gcc-build]#mkdir gcc-build
[root@localhost gcc-build]#cd gcc-build
[root@localhost gcc-build]#../configure --prefix=/usr/local/gcc-5.4.0 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp-4.3.2 --with-mpfr=/usr/local/mpfr-2.4.2 --with-mpc=/usr/local/mpc-0.8.1
[root@localhost gcc-build]#make
[root@localhost gcc-build]#make install
现在gcc-5.4.0安装完成了,但是gcc-5.4.0的环境变量还没有设置,系统中使用的还是旧版的gcc

重新设置gcc环境变量,更新系统gcc版本号

#备份gcc-4.4.7 
mkdir /usr/gcc447backup/
mv /usr/bin/{gcc,g++} /usr/gcc447backup
ln -s /usr/local/gcc-5.4.0/bin/gcc /usr/bin/gcc
ln -s /usr/local/gcc-5.4.0/bin/g++ /usr/bin/g++
gcc -v

验证

gcc -v

如果显示的gcc版本仍是以前的版本,可以重启系统;which gcc 查看gcc的安装位置。

这个时候如果编译程序会发现提示:version `GLIBCXX_3.4.21’ not found问题。

然后这里还有一个问题,就是使用的libstdc++等文件时,发现使用的还是gcc4.4.2,没有使用新的gcc编译出来的so,这个时候就需要我们去查询到最新的so,把so复制到/usr/lib64下面重新软链接。

使用下面语句查看最新so文件,注意没有权限要加上sudo。

find / -name "libstdc++.so*"

复制到/usr/lib64。然后将libstdc++.so.6 软链接到最新的库上面,这里是libstdc++.so.6.0.21

ln -snf /usr/local/gcc-5.4.0/lib64/libstdc++.so.6.0.21 /usr/lib64/libstdc++.so.6

成功后可以使用strings查看,也可以查看其它文件,原理类似

strings /usr/lib64/libstdc++.so.6 | grep GLIBC

libmpfr.so.1 libgmp.so.3 libmpc.so.2
如果lib64没有软链接

ln -s  /usr/local/gmp-4.3.2/lib/libgmp.so.3  /usr/lib64/libgmp.so.3
ln -s  /usr/local/mpc-0.8.1/lib/libmpc.so.2  /usr/lib64/libmpc.so.2
ln -s  /usr/local/mpfr-2.4.2/lib/libmpfr.so.1 /usr/lib64/libmpfr.so.1

如果/usr/lib64有软链接,就重新修改链接

ln –snf   /usr/local/gmp-4.3.2/lib/libgmp.so.3  /usr/lib64/libgmp.so.3
ln –snf   /usr/local/mpc-0.8.1/lib/libmpc.so.2  /usr/lib64/libmpc.so.2
ln –snf   /usr/local/mpfr-2.4.2/lib/libmpfr.so.1 /usr/lib64/libmpfr.so.1

注:
1.安装gcc出现错误:configure: error: error verifying int64_t uses long long

sudo yum install gcc-c++

2.解压出现错误:tar (child): bzip2:无法 exec: 没有那个文件或目录

 yum -y install bzip2

你可能感兴趣的:(Linux)