CentOS 7如何编译安装升级gcc至7.5版本?

CentOS 7如何编译安装升级gcc版本?

由于配置CentOS-SCLo-scl.repoCentOS-SCLo-scl-rh.repo后执行yum install -y devtoolset-7安装总是异常,遂决定编译安装gcc7.5

bash 复制代码
# 备份之前的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
相关推荐
SHERlocked932 分钟前
CPP 从 0 到 1 完成一个支持 future/promise 的 Windows 异步串口通信库
c++·算法·promise
虚拟之1 小时前
36、stringstream
c++
我很好我还能学1 小时前
【面试篇 9】c++生成可执行文件的四个步骤、悬挂指针、define和const区别、c++定义和声明、将引用作为返回值的好处、类的四个缺省函数
开发语言·c++
jiunian_cn1 小时前
【Linux】centos软件安装
linux·运维·centos
睡觉待开机1 小时前
0. MySQL在Centos 7环境安装
数据库·mysql·centos
藥瓿亭1 小时前
K8S认证|CKS题库+答案| 6. 创建 Secret
运维·ubuntu·docker·云原生·容器·kubernetes·cks
程序员JerrySUN1 小时前
[特殊字符] 深入理解 Linux 内核进程管理:架构、核心函数与调度机制
java·linux·架构
孤寂大仙v1 小时前
【计算机网络】非阻塞IO——select实现多路转接
linux·计算机网络
2302_809798321 小时前
【JavaWeb】Docker项目部署
java·运维·后端·青少年编程·docker·容器
嵌入式大圣1 小时前
Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践
运维·docker·容器