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
相关推荐
傅里叶的耶21 分钟前
C++系列(二):告别低效循环!选择、循环、跳转原理与优化实战全解析
c++·visual studio
JeffersonZU33 分钟前
Linux/Unix文件IO(文件描述符、原子操作、文件数据结构、open、read、write、fcntl、dup)
linux·c语言·unix·gnu
Vitta_U38 分钟前
MFC的List Control自适应主界面大小
c++·list·mfc
szekl1 小时前
HDMI 2.0 4×2矩阵切换器412HN——多信号输入输出的高清解决方案
linux·矩阵·计算机外设·电脑·ekl
weixin_399380691 小时前
k8s一键部署tongweb企业版7049m6(by why+lqw)
java·linux·运维·服务器·云原生·容器·kubernetes
阿巴~阿巴~1 小时前
Linux基本命令篇 —— uname命令
linux·运维·服务器
Dovis(誓平步青云)2 小时前
基于探索C++特殊容器类型:容器适配器+底层实现原理
开发语言·c++·queue·适配器·stack
天空之城夢主2 小时前
KVM高级功能部署
linux·服务器
IT成长日记2 小时前
【Docker基础】Docker数据卷管理:docker volume ls及其参数详解
运维·docker·容器·volume ls
pipip.3 小时前
UDP————套接字socket
linux·网络·c++·网络协议·udp