Linux-gcc升级

做为Linux环境下的C语言编译器,在部署服务时往往对gcc版本提出了要求,一般原生系统里的gcc版本为4.4.7.这里演示如何将4.7版本升级至8.4.0

前期准备

gcc安装包:http://ftp.gnu.org/gnu/gcc/

升级步骤

  • 将gcc安装包上传至Linux系统并进行解压,我上传的是home目录下
//解压
tar -zxvf gcc-8.4.0.tar.gz
  • 解压gcc安装包后,进入安装目录执行:
//进入目录
cd gcc-8.4.0
//执行脚本
./contrib/download_prerequisites

在执行该脚本后,脚本会自动帮我们下载和安装以下库:mpfr-2.4.2.tar.bz2、gmp-4.3.2.tar.bz2、mpc-0.8.1.tar.gz和isl-0.15.tar.bz2,如果服务器无法连接外网的话,可到以下链接下载这四个库自行安装:注意要把这几个安装包解压到gcc安装目录下,https://pan.baidu.com/s/11oC6Z5Jxe8kjsmWEoXYczg
提取密码:qqgk

  • 完成依赖库的安装后,在gcc安装目录下执行:
./configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

有些教程里推荐另外建一个build文件作为接下来的编译文档,其实没差,文件的放置位置也有讲究,不然会报错,这里就直接在安装目录执行该命令。

  • 这一步比较耗时,个把小时属于正常现象
make -j4
  • 默认安装位置是在/usr/local/bin下
make install
  • 安装完成后可以查看一下是否已有文件安装
ls /usr/local/bin | grep gcc

Linux-gcc升级_第1张图片

  • 配置gcc,找到libstdc++.so.6.0.25所在目录,找到后将其复制到/usr/lib64下
//进入lib64目录
cd /usr/lib64
//将libstdc++.so.6.0.25复制到/usr/lib64下
cp /home/gcc-8.4.0/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.25 ./
//更改原有连接
mv libstdc++.so.6 libstdc++.so.6.old
//创建连接文件
ln -sv libstdc++.so.6.0.25 libstdc++.so.6
  • 替换系统低版本gcc,系统自带低版本 gcc 文件位置为/usr/bin/gcc和/usr/bin/lib,此时需要将这两个部分删掉,或者后缀加上.bak,然后通过建立软连接的方式替换系统默认位置的 gcc、c++、g++ 文件。
#推荐这里进入/usr/bin下再执行命令,不然像mv ./g++这句会报错
//更改低版本GCC
mv /usr/bin/c++ /usr/bin/c++.bak
//创建新连接
ln -s /usr/local/bin/c++ /usr/bin/c++
//更改低版本GCC
mv ./g++ ./g++.bak
//创建新连接
ln -s /usr/local/bin/g++ /usr/bin/g++
//更改低版本GCC
mv ./gcc ./gcc.bak
//创建新连接
ln -s /usr/local/bin/gcc /usr/bin/gcc
  • 至此安装大功告成,输入gcc -v查看
    Linux-gcc升级_第2张图片

参考文章:https://blog.csdn.net/weixin_43877605/article/details/90796681

你可能感兴趣的:(Linux)