当前位置:   article > 正文

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

centos7 gcc

CentOS 7升级GCC

正文开始@Assassin
  • 1

我们在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++
  • 1

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

gcc --version
g++ --version
  • 1
  • 2

在这里插入图片描述

基本执行步骤:

1. 切换用户:

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

su - root
  • 1

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

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
  • 1

在这里插入图片描述

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

在这里插入图片描述

3. 安装devtoolset:

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

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

在这里插入图片描述

4. 激活对应的devtoolset:

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

scl enable devtoolset-9 bash
  • 1

此条命令行也同样适用

source /opt/rh/devtoolset-9/enable
  • 1

5. 查看gcc版本号:

gcc --version
  • 1

在这里插入图片描述

g++ --version
  • 1

在这里插入图片描述

6. 一些issue:

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

source ./enable
  • 1

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

source /opt/rh/devtoolset-*/enable
  • 1

可以将对应版本的切换命令写个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
  • 1
  • 2

现在就算是永久性地启动指定版本的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.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/261009
推荐阅读
相关标签
  

闽ICP备14008679号