1.应用场景

主要用于编译安装软件时,遇到问题,提示GCC编译器版本太低, 只好升级.

2.学习/操作

环境:

阿里云ECS  centOS 7

权限: 普通用户权限或者root权限

 

 

这里采用shell脚本方式进行升级

先查看gcc 版本

gcc --version

 

1.进入目录

cd /usr/src

 

2.编辑shell脚本

sudo vim upgradeGcc.sh

内容如下:

 

#!/bin/bash
#在非root账户下,使用sudo命令
#获取源码
#sudo http://ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz

 

file='gcc-7.3.0.tar.gz'

if [ -f $file ]

then

 echo "文件已经存在"

else 

    wget http://ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz 

fi


#解压
#sudo tar -xvf gcc-7.3.0.tar.gz
tar -xvf gcc-7.3.0.tar.gz

cd gcc-7.3.0
#sudo ./contrib/download_prerequisites
./contrib/download_prerequisites
cd ..

#建立编译输出目录
#sudo mkdir gcc-build-7.3.0
mkdir gcc-build-7.3.0

#进入下面目录,执行命令,生成Makefile文件               
cd gcc-build-7.3.0
#sudo ../gcc-7.3.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
../gcc-7.3.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

#执行命令进行编译,此处利用4个job,需编译时约40分钟,此值不宜设置过高 也可以不设置[根据服务器配置而定]
#sudo make -j4
make -j4

#安装
#sudo make install
make install

3. 添加可执行权限 //这里给了最大权限

chmod 777 upgradeGcc.sh

 

4.执行脚本  //需要一段时间 先去吃饭

./upgradeGcc.sh

 

Note:

一直提示权限问题, 就直接切换到root用户下,进行shell脚本执行  //很野,反正跟最坏的结果就是重装系统,而且shell脚本中并没有破坏性操作

 

 

 

下载一些依赖,会有一些慢,稍等会儿

 

接下来运行编译会有些慢,需要等待//先做其他事情

 

各种幺蛾子,还是编译出现问题 TBD

 

 

5.查看Gcc版本 是否升级成功

TBD

 

 

 

后续补充

...

3.问题/补充

1. 经过网络下载可知,相同带宽下【1M】,阿里云ECS比华为ECS 与 腾讯元ECS要速度快  //20200711

 

2.执行 ./contrib/download_prerequisites 命令,即下载一些GCC相关源代码包,下载不下来或者下载很慢,导致一直安装不成功

需要哪些包可以进入 ./contrib/ 目录,查看

下载地址如下:

ftp://gcc.gnu.org/pub/gcc/infrastructure/

目前还没有想到好的办法:网络原因,解决思路必须很快下载下来直接或者迂回【先下载后上传方式】

 

shell脚本或者:

#!/bin/bash
#必备组件安装
yum install -y gcc gcc-c++ bzip2

#root用户执行,到用户目录。其实cd哪里都阔以。
cd ~/
#下载gcc源代码
wget https://ftp.gnu.org/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz
#解压
tar -zxvf gcc-7.3.0.tar.gz
#到源代码目录
cd gcc-7.3.0
#下载一些必须的东西
./contrib/download\_prerequisites
#如果下载不下来,或者下载缓慢可以考虑查看命令行拿到下载地址自己down下拉后,放到源代码目录。
#具体地址:ftp://gcc.gnu.org/pub/gcc/infrastructure/,
#需要下载的几个源代码包如下,可以查看./contrib/download\_prerequisites文件。
gmp='gmp-6.1.0.tar.bz2'
mpfr='mpfr-3.1.4.tar.bz2'
mpc='mpc-1.0.3.tar.gz'
isl='isl-0.16.1.tar.bz2'
#接着创建一个目录,用于gcc build
mkdir gcc-build-7.3.0
#cd到build目录,准备开始编译了。
cd gcc-build-7.3.0
#编译的config,disable-multilib 64位编译标记。具体可查看官方文档
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
#接着就是漫长的编译等待了
make #不知是否可以使用make -j8之类的开启多核编译是否会快一点,我反正是等了好几个小时
#next
make install
#重新建立软连接
find / -name "libstdc++.so*" #找到自己的文件路径
#把libstdc++.socopy到/usr/lib64目录,类似下面的命令
cp /root/gcc-7.3.0/gcc-build-7.3.0/x86\_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.24 /usr/lib64
cd /usr/lib64 
 rm -rf libstdc++.so.6 #删除原来的
 ln -s libstdc++.so.6.0.24 libstdc++.so.6 #重新建立软连
 gcc -v #看看输出,是否变为7.3.0

4.参考

https://cloud.tencent.com/developer/article/1365651  //centos7 升级GCC版本到7.3.0

https://www.linuxidc.com/Linux/2018-10/155030.htm   //Linux 下升级gcc版本(gcc-7.3.0)

后续补充

...

 

Logo

更多推荐