【Linux基础】CentOS 7环境下安装高版本GCC (gcc/g++ 9.3)

本文指导如何在 CentOS 7 中升级默认的 GCC 版本,从 4.8.5 升级到 9.3,以支持 C++11 特性,并详细解释了安装 centos-release-scl、devtoolset 的步骤,以及如何创建软链接实现长期使用指定版本的编译器。
摘要由CSDN通过智能技术生成

CentOS 7升级GCC

正文开始@Assassin

我们在centos下默认的gcc版本是gcc4.8.5,版本比较低,默认是支持编译c++98的,若在C++程序中直接使用到c++11的特性,则会报错。
解决方案: 在编译时加上-std=c++11即可,如g++ test.cpp -o run -std=c++11

在bash下直接下载 :

yum install -y gcc gcc-c++

在这里插入图片描述
查看一下版本号:

gcc --version
g++ --version

在这里插入图片描述

基本执行步骤:

1. 切换用户:

输入以下命令行切换到root用户,此时需要输入你对应的root密码

su - root

如下图所示:
在这里插入图片描述

2. 安装centos-release-scl:

sudo yum install -y http://mirror.centos.org/centos/7/extras/x86_64/Packages/centos-release-scl-rh-2-3.el7.centos.noarch.rpm

在这里插入图片描述

sudo yum install -y http://mirror.centos.org/centos/7/extras/x86_64/Packages/centos-release-scl-2-3.el7.centos.noarch.rpm

在这里插入图片描述

3. 安装devtoolset:

这里需要注意一下,如果想安装7.版本的,就改成devtoolset-7-gcc,以此类推

sudo yum install devtoolset-9-gcc-c++

在这里插入图片描述

4. 激活对应的devtoolset:

按理来说你可以一次安装多个版本的devtoolset,需要的时候用下面这条命令切换到对应的版本

scl enable devtoolset-9 bash

此条命令行也同样适用

source /opt/rh/devtoolset-9/enable

5. 查看gcc版本号:

gcc --version

在这里插入图片描述

g++ --version

在这里插入图片描述

6. 一些issue:

注意:这条scl enable devtoolset-9 bash激活命令只对本次会话有效,重启会话或者切换用户后还是会变回原来的4.8.5版本,因为安装的devtoolset是在/opt/rh目录下的,如图所示:
在这里插入图片描述
每个版本的目录下面都有个enable文件:
在这里插入图片描述
如果需要启用某个版本,只需要执行命令行:

source ./enable

所以要想切换到某个版本,只需要执行:

source /opt/rh/devtoolset-*/enable

可以将对应版本的切换命令写个shell脚本放在配置了环境变量的目录下,需要时随时切换,或者开机自启。但是经过我自己的实践,不推荐上述方法。


最直截了当的方法是直接替换旧版本的gcc

旧版本gcc运行的在/usr/bin/gcc,所以将该目录下的gcc/g++替换为安装的新版本gcc软连接,省去了每次都要enable,简洁明了

依次执行以下命令:

mv /usr/bin/gcc /usr/bin/gcc-4.8.5
ln -s /opt/rh/devtoolset-9/root/bin/gcc /usr/bin/gcc

现在就算是永久性地启动指定版本的gcc,这种方式适用于长期使用该版本进行编译,切换bash依然有效

切换到Assassin用户查看一下:

[root@Ninghai ~]# su - Assassin
Last login: Fri Nov 26 22:20:43 CST 2021 from 182.118.236.53 on pts/1
[Assassin@Ninghai ~]$ g++ --version
g++ (GCC) 9.3.1 20200408 (Red Hat 9.3.1-2)
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

在这里插入图片描述
到这里就ok了~~

评论 36
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宁海没有七号公园

谢谢你%%%

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值