环境说明:
CentOS Linux release 7.4.1708 (Core)
内核版本: 3.10.0-693.el7.x86_64
工作目录:/usr/local/src/
mysql 安装目录:/apps/program
其它程序安装目录:/usr/local/程序名+版本号
安装源码准备
cd /usr/local/src/
wget https://mirrors.ustc.edu.cn/gnu/gmp/gmp-6.1.2.tar.xz
wget https://mirrors.ustc.edu.cn/gnu/mpfr/mpfr-4.0.2.tar.gz
wget https://mirrors.ustc.edu.cn/gnu/mpc/mpc-1.1.0.tar.gz
wget https://mirrors.ustc.edu.cn/gnu/gcc/gcc-9.2.0/gcc-9.2.0.tar.gz
wget https://github.com/Kitware/CMake/releases/download/v3.15.2/cmake-3.15.2.tar.gz
wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-boost-8.0.17.tar.gz
安装依赖
yum -y install epel-release
yum -y group install "Development Tools"
mysql 依赖
yum -y install ncurses-devel openssl openssl-devel bison
安装gcc 源码编译依赖
## 先编译gmp->mpfr->mpc
cd /usr/local/src/
编译: gmp-6.1.2
tar -xvf gmp-6.1.2.tar.xz
cd gmp-6.1.2
./configure --prefix=/usr/local/gmp-6.1.2
make -j $(nproc)
make install
cd ../
编译:mpfr-4.0.2
tar -xvf mpfr-4.0.2.tar.gz
cd mpfr-4.0.2
./configure --prefix=/usr/local/mpfr-4.0.2 --with-gmp=/usr/local/gmp-6.1.2
make -j $(nproc)
make install
cd ../
编译:mpc-1.1.0
tar -xvf mpc-1.1.0.tar.gz
cd mpc-1.1.0
./configure --prefix=/usr/local/mpc-1.1.0 --with-mpfr=/usr/local/mpfr-4.0.2 --with-gmp=/usr/local/gmp-6.1.2
make -j $(nproc)
make install
# 把mpfr lib 加入 ld.so.conf 不然gcc 编译报错
echo /usr/local/mpfr-4.0.2/lib >> /etc/ld.so.conf
ldconfig
编译安装gcc
cd /usr/local/src/
tar -xvf gcc-9.2.0.tar.gz
cd gcc-9.2.0
./configure --prefix=/usr/local/gcc-9.2.0 \
-enable-threads=posix \
-disable-checking \
-disable-multilib \
-enable-languages=c,c++ \
--with-gmp=/usr/local/gmp-6.1.2 \
--with-mpfr=/usr/local/mpfr-4.0.2 \
--with-mpc=/usr/local/mpc-1.1.0 \
--with-tune=generic \
--with-arch_32=x86-64
make -j $(nproc)
make install -j $(nproc)
##备份旧 gcc 可执行文件
mv /usr/bin/gcc /usr/bin/gcc.old
mv /usr/bin/g++ /usr/bin/g++.old
mv /usr/bin/c++ /usr/bin/c++.old
mv /usr/bin/cpp /usr/bin/cpp.old
mv /usr/bin/gcov /usr/bin/gcov.old
## 创建最新gcc 执行文件软链
ln -sf /usr/local/gcc-9.2.0/bin/* /usr/bin/
## 删除lib64 目录下.py 文件不然ldconfig 报错
rm -rf /usr/local/gcc-9.2.0/lib64/libstdc++.so.6.0.27-gd