Linux升级安装gcc
以源码的方式编译升级gcc版本
由于在最新发布的Linux版中的UTS使用了C++17,所以对于如centos7或者比centos7版本更老的Linux系统可能会运行不起来,因为gcc和glibc的版本比较老,这时需要升级更新gcc的版本。下文以Centos7.6为例,源码升级安装gcc-11.2.0版本的gcc。
1、安装前检测
在linux命令行中执行命令,查看gcc、g++的版本
[root@k8s-node10 ~]# gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright © 2015 Free Software Foundation, Inc.
本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;
包括没有适销性和某一专用目的下的适用性担保。
centos7自带的gcc版本是4.8.5版本,比我们需要安装的目标版本要低,所以需要更新到目标版本。
2、下载地址
下载地址:Index of /gnu/gcc/gcc-11.2.0
3、安装与配置
1、下载并解压安装包:
[root@k8s-node9 software]# wget https://ftp.gnu.org/gnu/gcc/gcc-11.2.0/gcc-11.2.0.tar.gz --no-check-certificate[root@k8s-node9 software]# tar -xzvf gcc-11.2.0.tar.gz
2、下载依赖包:
[root@k8s-node9 software]# cd gcc-11.2.0
[root@k8s-node9 gcc-11.2.0]# ./contrib/download_prerequisites
3、配置生成Makefile文件:
[root@k8s-node9 gcc-11.2.0]# mkdir build
[root@k8s-node9 gcc-11.2.0]# cd build
[root@k8s-node9 build]# ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
4、编译并安装:
[root@k8s-node9 build]# make -j8
[root@k8s-node9 build]# make install
5、备份老的gcc相关:
[root@k8s-node9 build] mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.485
[root@k8s-node9 build] mv /usr/bin/gcc /usr/bin/gcc485
[root@k8s-node9 build] mv /usr/bin/g++ /usr/bin/g++485
[root@k8s-node9 build] mv /usr/bin/c++ /usr/bin/c++485
[root@k8s-node9 build] mv /usr/bin/cc /usr/bin/cc485
6、创建软链接:
安装的gcc新版本位于/usr/local/bin目录下面,需要为新版本gcc创建软链接:
[root@k8s-node9 build] ln -s /usr/local/bin/c++ /usr/bin/c++[root@k8s-node9 build] ln -s /usr/local/bin/g++ /usr/bin/g++[root@k8s-node9 build] ln -s /usr/local/bin/gcc /usr/bin/gcc[root@k8s-node9 build] ln -s /usr/local/bin/cc /usr/bin/cc[root@k8s-node9 build] ln -s /usr/local/lib64/libstdc++.so.6.0.29 /usr/lib64/libstdc++.so.6
7、验证版本:
安装完毕后,验证更新是否生效
[root@k8s-node7 ~]# gcc --version
gcc (GCC) 11.2.0
Copyright © 2021 Free Software Foundation, Inc.
本程序是自由软件;请参看源代码的版权声明。本软件没有任何担保;
包括没有适销性和某一专用目的下的适用性担保。
如果版本号被更新,则说明已经安装了11.2.0版本的gcc。