一、软件准备
wget -c https://mirrors.ustc.edu.cn/gnu/gcc/gcc-5.2.0/gcc-5.2.0.tar.gz
wget -c ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2
wget -c ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-4.3.2.tar.bz2
wget -c ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gz
wget -c http://ftp.gnu.org/gnu/m4/m4-1.4.16.tar.bz2
依赖依据gcc的安装说明: gcc-5.2.0/contrib/download_prerequisites
见下:
# Necessary to build GCC.
MPFR=mpfr-2.4.2
GMP=gmp-4.3.2
MPC=mpc-0.8.1
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/$MPFR.tar.bz2 || exit 1
tar xjf $MPFR.tar.bz2 || exit 1
ln -sf $MPFR mpfr || exit 1
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/$GMP.tar.bz2 || exit 1
tar xjf $GMP.tar.bz2 || exit 1
ln -sf $GMP gmp || exit 1
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/$MPC.tar.gz || exit 1
tar xzf $MPC.tar.gz || exit 1
ln -sf $MPC mpc || exit 1
二、安装
yum install gcc gcc-c++ bzip2 make -y
1、安装m4
tar -xf m4-1.4.13.tar.gz
cd m4-1.4.13
./configure --prefix=/usr/local/m4
make && make install
然后加入环境变量,否则后面会报错以下错误
‘checking for suitable m4... configure: error: No usable m4 in $PATH or /usr/5bin (see config.log for reasons).’
echo "PATH=$PATH:/usr/local/m4/bin" >>/etc/profile
source /etc/profile
cd ..
过程报错:
error: 'gets' undeclared here (not in a function)
解决方法:
cp -r tests/test-readlink.h{,.bak}
cp -r lib/stdio.in.h{,.bak}
sed -i -e '41s/ENOENT/& || errno == EINVAL/' tests/test-readlink.h
sed -i -e '/gets is a/d' lib/stdio.in.h
2、安装gmp-4.3.2
tar -xf gmp-4.3.2.tar.bz2
cd gmp-4.3.2
//创建编译目录
mkdir gmp-build
cd gmp-build
../configure --prefix=/usr/local/gmp-4.3.2
make
make install
cd ..
cd ..
3、安装mpfr-2.4.2
tar -xf mpfr-2.4.2.tar.bz2
cd mpfr-2.4.2
mkdir mpfr-build
cd mpfr-build
../configure --prefix=/usr/local/mpfr-2.4.2 --with-gmp=/usr/local/gmp-4.3.2
make
make install
cd ..
cd ..
3、安装mpc-0.8.1.tar.gz
tar -xf mpc-0.8.1.tar.gz
cd mpc-0.8.1
mkdir mpc-build
cd mpc-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
make
make install
cd ..
cd ..
4、增加环境变量
vim /etc/profile
source /etc/profile
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
5、安装GCC5.2.0
tar -xf gcc-5.2.0.tar.gz
cd gcc-5.2.0
mkdir gcc-build
cd gcc-build
../configure --prefix=/usr/local/gcc-5.2.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
make -j4
//安装
make install -j4
6、安装好GCC5.2.0之后,重新设置GCC环境变量,更新系统GCC版本号
[root@a927fbd7a4ad ~]# ls /usr/local/gcc-5.2.0/bin
c++ gcc gcc-ranlib x86_64-unknown-linux-gnu-c++ x86_64-unknown-linux-gnu-gcc-5.2.0 x86_64-unknown-linux-gnu-gcc-ranlib
cpp gcc-ar gcov x86_64-unknown-linux-gnu-g++ x86_64-unknown-linux-gnu-gcc-ar
g++ gcc-nm gcov-tool x86_64-unknown-linux-gnu-gcc x86_64-unknown-linux-gnu-gcc-nm
//备份已有的gcc-4.8.5
mkdir /usr/gcc.4.8.5.bak/
mv /usr/bin/{gcc,g++,c++} /usr/gcc.4.8.5.bak/
ln -s /usr/local/gcc-5.2.0/bin/gcc /usr/bin/gcc
ln -s /usr/local/gcc-5.2.0/bin/g++ /usr/bin/g++
ln -s /usr/local/gcc-5.2.0/bin/c++ /usr/bin/c++
查看版本
gcc -v
g++ -v
[root@a927fbd7a4ad gcc-build]# g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/local/gcc-5.2.0/libexec/gcc/x86_64-unknown-linux-gnu/5.2.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../configure --prefix=/usr/local/gcc-5.2.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
Thread model: posix
gcc version 5.2.0 (GCC)
[root@a927fbd7a4ad gcc-build]#
[root@a927fbd7a4ad gcc-build]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc-5.2.0/libexec/gcc/x86_64-unknown-linux-gnu/5.2.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../configure --prefix=/usr/local/gcc-5.2.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
Thread model: posix
gcc version 5.2.0 (GCC)
[root@a927fbd7a4ad ~]# c++ -v
Using built-in specs.
COLLECT_GCC=c++
COLLECT_LTO_WRAPPER=/usr/local/gcc-5.2.0/libexec/gcc/x86_64-unknown-linux-gnu/5.2.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../configure --prefix=/usr/local/gcc-5.2.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
Thread model: posix
gcc version 5.2.0 (GCC)
----------------------end