CentOS 7如何编译安装升级gcc版本?
由于配置CentOS-SCLo-scl.repo
与CentOS-SCLo-scl-rh.repo
后执行yum install -y devtoolset-7
安装总是异常,遂决定编译安装gcc7.5
# 备份之前的yum .repo文件至 /tmp/repo_bak 目录
mkdir -p /tmp/repo_bak && cd /etc/yum.repo.d && /bin/mv ./*.repo /tmp/repo_bak
# 更换yum软件源为阿里云镜像源,执行脚本后一直全部回车即可
bash <(curl -sSL https://linuxmirrors.cn/main.sh)
# yum安装编译依赖
yum install -y lbzip2 gcc gcc-c++ gmp-devel mpfr-devel libmpc-devel isl-devel
# 阿里云镜像源下载gcc 7.5版本源码包,升级至其它版本,更改URL中的7.5.0版本号即可
wget https://mirrors.aliyun.com/gnu/gcc/gcc-7.5.0/gcc-7.5.0.tar.gz
# 解压下载源码包
tar -zxvf ./gcc-7.5.0.tar.gz
# cd进去解压源码目录
cd gcc-7.5.0
# 官方镜像源,下载速度较慢,推荐阿里云镜像源
wget https://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2
wget https://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2
wget https://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz
wget https://gcc.gnu.org/pub/gcc/infrastructure/isl-0.16.1.tar.bz2
# 基于阿里云镜像源下载
wget https://mirrors.aliyun.com/gnu/gmp/gmp-6.1.0.tar.bz2
wget https://mirrors.aliyun.com/gnu/mpfr/mpfr-3.1.4.tar.bz2
wget https://mirrors.aliyun.com/gnu/mpc/mpc-1.0.3.tar.gz
wget http://ftp.ntua.gr/mirror/gnu/gcc/infrastructure/isl-0.16.1.tar.bz2
# 编译前务必执行检查是否ok,后输出 All prerequisites downloaded successfully. 为正常
./contrib/download_prerequisites
# 创建构建目录
cd .. && mkdir -p gcc-build-7.5.0
#进入构建目录
cd gcc-build-7.5.0
# 生成Makefile文件,--disable-multilib参数为只编译64位库,-enable-multilib参数为同时编译32位和64位库,是否为64位操作系统可以执行uname -a查看 x86_64为64位操作系统,i386 为32位操作系统
../gcc-7.5.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
# -j$(nproc)启动并行编译,同时运行CPU总核数个编译任务,加速编译过程,笔者测试8核CPU编译预计20分钟
make -j$(nproc)
make install
# 以绝对路径验证的GCC版本,是否安装成功
/usr/local/bin/gcc --version
which gcc # 查看当前 GCC 路径(通常是 /usr/bin/gcc)
gcc --version # 查看当前GCC版本
# 重命名系统自带GCC相关文件
mv /usr/bin/gcc /usr/bin/gcc-4.8.5
mv /usr/bin/g++ /usr/bin/g++-4.8.5
mv /usr/bin/gcov /usr/bin/gcov-4.8.5
# 注册新 GCC 到 alternatives
update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/gcc 100
update-ualternatives --install /usr/bin/g++ g++ /usr/local/bin/g++ 100
update-alternatives --install /usr/bin/gcov gcov /usr/local/bin/gcov 100
# 注册旧 GCC 到 alternatives
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8.5 50
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8.5 50
update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-4.8.5 50
# 输入1回车
update-alternatives --config gcc
# 声明新安装GCC的环境变量,注意此步必须执行,否则后续GCC编译无法调用7.5版本新的运行库
cat << 'EOF' >> ~/.bashrc
export PATH=/usr/local/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
export LIBRARY_PATH=/usr/local/lib64:$LIBRARY_PATH
export C_INCLUDE_PATH=/usr/local/include
export CPLUS_INCLUDE_PATH=/usr/local/include/c++/7.5.0
EOF
source ~/.bashrc
# 以非绝对路径,查看当前GCC版本是否为7.5
cd && gcc --version