Centos7下升级gcc/g++版本(简单 + 避坑)

在 Centos7 下,使用 yum 安装高版本的 gcc/g++ 最简单:

yum -y install centos-release-scl
yum -y install devtoolset-11-gcc devtoolset-11-gcc-c++ devtoolset-11-binutils
  • 需要安装哪个个版本的gcc/g++,就把数字替换成对应的版本号。例如上面代码中,我们下载了 gcc11 和 g++11
  • gcc版本与C++标准的对应关系可以参考gcc官网 >链接

使用 scl enable devtoolset-11 bash 启用 devtoolset-11 软件集和,此时使用 g++ --version 以及 gcc --version 命令就会发现我们的 gcc g++ 已经完成了升级。

image-20240109161021405

但是scl命令的作用只是暂时的,如果要长久生效,我们就需要写入到配置文件中:

echo "source /opt/rh/devtoolset-11/enable" >>/etc/profile

(注意:具体数字根据你下载的版本来)

写到这里我们的升级工作就完成了,但我写这篇博客就是想吐槽一下网络上常见的错误:试图通过替换 gcc/g++ 来实现永久生效。

mv /usr/bin/gcc /usr/bin/gcc-4.8.5
 
sudo ln -s /opt/rh/devtoolset-10/root/bin/gcc /usr/bin/gcc
 
mv /usr/bin/g++ /usr/bin/g++-4.8.5
 
sudo ln -s /opt/rh/devtoolset-10/root/bin/g++ /usr/bin/g++

试想一下,你的编译器确实是新版的,但是你的头文件和库文件不还都是原先老版本的吗,一些新版的C++语法自然就不会支持。我当初就被这种写法坑了,编译 redis-plus-plus 时就提示提示 c++17 语法不能识别。

image-20240109161857075

执行 /opt/rh/devtoolset-11 路径下的 eable 文件才是正确的写法,它不仅设置了编译器可执行文件的 PATH 环境变量,同样会设置标准库头文件、库文件等环境变量,具体完成的操作我们可以通过 vim /opt/rh/devtoolset-11/enable 查看

在这里插入图片描述在这里插入图片描述

  1. 向 PATH 环境变量中添加工具集中的编译器、调试器等工具的路径。
  2. 设置 LD_LIBRARY_PATH 环境变量,以便在运行程序时正确加载工具集中的库文件。
  3. 设置 MANPATH 环境变量,以便在使用 man 命令查看文档时能够正确显示工具集的文档。
  4. 设置 INFOPATH 环境变量,以便在使用 info 命令查看文档时能够正确显示工具集的文档。
  5. 置 PKG_CONFIG_PATH 环境变量,以便在编译过程中使用 pkg-config 工具时能够正确找到工具集中的库文件。
  6. 如果在执行命令之前已经设置了 CXX 或 CC 环境变量,则将这些变量设置为与工具集中对应的编译器路径。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/304829.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

A借助AI工具提升电子邮件营销内容效果

随着互联网的普及和电子邮件的广泛应用,邮件营销已成为企业推广产品和服务的重要手段之一。为了提高邮件营销的效果,我们需要关注邮件内容的质量和吸引力。而百度文言一心等AI工具作为一款强大的在线写作工具,可以帮助我们提升邮件营销内容的…

MySQL运维实战(3.2) 常见数据库连接失败问题排查

作者:俊达 我们经常会遇到一些数据库连接失败或访问报错的问题。收集并分析具体的报错信息,可以帮助我们迅速定位问题。 1、客户端到服务端的网络是否畅通,服务端端口是否能连通。 使用ping、telnet等工具探测服务端的端口是否能访问。 […

C语言分支和循环语句

分支和循环语句 学习内容 分支语句 if switch 循环语句 while for do while goto语句 1. 什么是语句? C语句可分为以下五类: 表达式语句 函数调用语句 控制语句 复合语句 空语句 本次介绍的是控制语句。 控制语句用于控制程序的执行流程&a…

Android14之刷机模式总结(一百七十八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

Spring之启动过程源码

文章目录 一. Spring初始化流程二. 源码分析1. 初步分析2. 核心方法refresh() 三. 事件发布机制1. 简介2. 源码分析 一. Spring初始化流程 前面的内容我们已经把Bean的生命周期的源码已经分析完了。现在我们从容器的角度去分析源码,这一部分首先着重分析一下Spring…

CVE-2023-51385 OpenSSH ProxyCommand命令注入漏洞

一、背景介绍 ProxyCommand 是 OpenSSH ssh_config 文件中的一个配置选项,它允许通过代理服务器建立 SSH 连接,从而在没有直接网络访问权限的情况下访问目标服务器。这对于需要经过跳板机、堡垒机或代理服务器才能访问的目标主机非常有用。 二、漏洞简…

2024第十六届数字图像处理国际会议(ICDIP 2024) 即将召开!

第十六届数字图像处理国际会议(ICDIP 2024)将于2024年5月24-26日在中国海口召开。本次会议由海南大学主办,海南大学计算机科学与技术学院承办。ICDIP自2009年开办以来,已先后在新加坡、日本、中国、马来西亚理科大学等国家成功举办…

【动态规划】C++算法:403.青蛙过河

作者推荐 【动态规划】C算法312 戳气球 LeetCode:403 青蛙过河 一只青蛙想要过河。 假定河流被等分为若干个单元格,并且在每一个单元格内都有可能放有一块石子(也有可能没有)。 青蛙可以跳上石子,但是不可以跳入水中。 给你石子…

C++ Web框架Drogon初体验笔记

这段时间研究了一下C的Web框架Drogon。从设计原理上面来说和Python的Web框架是大同小异的,但是难点在于编译项目上面,所以现在记录一下编译的过程。下面图是我项目的目录。其中include放的是头文件,src放的是视图文件,static放的是…

机器人技能学习-robosuite-0-入门介绍

文章目录 前言模块介绍实战案例1:从 demo 中创建自己的 env案例2:更换属于自己的物体 前言 资料太少、资料太少、资料太少,重要的事说三边,想根据自己实际场景自定义下机器人,结果发现无路可走,鉴于缺少参…

【unity小技巧】FPS游戏实现相机的偏移震动、武器射击后退和后坐力效果

最终效果 文章目录 最终效果前言相机偏移震动相机震动脚本换弹节点震动 武器射击后退效果武器后坐力效果完结 前言 关于后坐力之前其实已经分享了一个:FPS游戏后坐力制作思路 但是实现起来比较复杂,如果你只是想要简单的实现,可以看看这个&…

类与对象中篇

前言 在上篇我们讲解了类与对象的基础框架,中篇我们将讲解类与对象的基本内容,即类的六个默认成员函数。 一、类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。 问题: 空类中真的什么都没有吗? 答案是&a…

软件测试必会:cookie、session和token的区别

今天就来说说session、cookie、token这三者之间的关系!最近这仨玩意搞得头有点大🤣 01、为什么会有它们三个 我们都知道 HTTP 协议是无状态的,所谓的无状态就是客户端每次想要与服务端通信,都必须重新与服务端链接,意…

【YOLO系列】 YOLOv4之Mish函数

一、简述 一个新的state of the art的激活函数,ReLU的继任者。 Diganta Misra在 “Mish: A Self Regularized Non-Monotonic Neural Activation Function”论文中介绍了Mish这个新的深度学习激活函数,指出该函数在准确度上比Swish(0.494%&…

资深大佬养成之路:Java中关于List集合选择与使用

目录 1、前言 2、List集合的概念和作用 2.1 什么是List集合 2.2 List集合的作用 2.3 List集合的特点 3、ArrayList和LinkedList的区别 3.1 ArrayList的特点和适用场景 3.2 LinkedList的特点和适用场景 3.3 如何选择ArrayList还是LinkedList 4、List集合的常用操作 4…

Java IO学习和总结(超详细)

一、理解 I/O 是输入和输出的简写,指的是数据在计算机内部和外部设备之间的流动。简单来说,当你从键盘输入数据、从鼠标选择操作,或者在屏幕上看到图像,这些都是 I/O 操作。它就像是计算机与外部世界沟通的桥梁,没有 I…

harmony开发之状态state修饰器的使用

来自官方开发文档, State装饰的变量,或称为状态变量,一旦变量拥有了状态属性,就和自定义组件的渲染绑定起来。当状态改变时,UI会发生对应的渲染改变。 在状态变量相关装饰器中,State是最基础的&#xff0…

更改邮箱发件人

更改邮箱发件人 未更改前发件人显示为发件人的邮箱地址 这里以outlook邮箱为例,进行邮箱发件人的更改 1.点击左上角“文件”选项 2.打开“账户设置”下拉菜单中的“账户设置” 3.选择“电子邮件”,点击该栏下的“更改”选项 4.在弹出页面中修改你…

<软考高项备考>《论文专题 - 56 进度管理(7) 》

10 历年真题解析 10.1 格式 背景500字1-2段 过渡段150字左右1段 一、规划进度管理…【随便写,正常写即可】 二、定义活动…【随便写,正常写即可】 三、排列活动顺序…【随便写,正常写即可】 四、估算活动持续时间…【随便写,正常…

redhat+ oracle 11.2.0.4 RAC 搭建 dataguard

知识改变命运,技术就是要分享,有问题随时联系,免费答疑,欢迎联系! redhat oracle 11.2.0.4 RAC 搭建 dataguard 1.安装环境 主机名 OS DB SID db_name db_unique_name rac1 Redhat7 11.2.0.4 orcl1 orcl o…