centos升级g++使其支持c++17

ops/2024/10/21 1:36:07/

centos升级g++使其支持c++17

  • 升级g++的原因
    • 现象
    • 原因
  • 升级g++方法
    • 更新镜像源
    • yum升级g++版本
  • 总结

升级g++的原因

现象

编译最新版本的jsoncpp报一下错误

jsontest.h:87:37: error: ‘hexfloat’ is not a member of ‘std’oss << std::setprecision(16) << std::hexfloat << value;^
make[2]: *** [src/test_lib_json/CMakeFiles/jsoncpp_test.dir/jsontest.cpp.o] Error 1
make[1]: *** [src/test_lib_json/CMakeFiles/jsoncpp_test.dir/all] Error 2
make: *** [all] Error 2

原因

在编译 C++ 代码时遇到 “error: ‘hexfloat’ is not a member of ‘std’” 这样的错误信息,这意味着代码中尝试使用了 C++ 标准库 (std) 中不存在的成员 hexfloat。
C++ 标准支持问题:如果正在使用的是 C++14 或更早的标准,hexfloat 关键字可能不受支持。hexfloat 是从 C++17 开始引入的一个特性,用于表示十六进制浮点字面量。
查看当前g++版本

g++ --version
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.

原始版本太老不支持c++17的新特性,需要升级g++版本

升级g++方法

使用yum出现以下报错

Could not retrieve mirrorlist http://mirrorlist.centos.org?arch=x86_64&release=7&repo=sclo-rh error was
14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"

2024 年 7 月 1 日 官方停止维护 CentOS 7。该系统内置的 yum.repo 所使用的域名 mirrorlist.centos.org 不能使用。

更新镜像源

1.备份官方的原yum源的配置

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

2.下载Centos-7.repo文件

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

3.CentOS-SCLo-scl.repo CentOS-SCLo-scl-rh.repo 修改这两个文件
CentOS-SCLo-scl.repo

[centos-sclo-sclo]
name=CentOS-7 - SCLo sclo
baseurl=https://mirrors.aliyun.com/centos/7/sclo/x86_64/sclo/
# mirrorlist=https://mirrors.aliyun.com?arch=$basearch&release=7&repo=sclo-sclo
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

CentOS-SCLo-scl-rh.repo

[centos-sclo-rh]
name=CentOS-7 - SCLo rh
baseurl=https://mirrors.aliyun.com/centos/7/sclo/x86_64/rh/
#mirrorlist=https://mirrors.aliyun.com?arch=$basearch&release=7&repo=sclo-rh
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

4.清除及生成缓存。

# 清除yum缓存
yum clean all
# 缓存阿里云源
yum makecache
# 测试阿里云源 
yum list

yum升级g++版本

yum list devtoolset-*-gcc
yum -y install centos-release-scl
yum -y install devtoolset-11-gcc devtoolset-11-gcc-c++ devtoolset-11-binutils

当前控制台生效:

scl enable devtoolset-11 bash

重启后也要生效:(可选)

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

总结

本文从jsoncpp编译出错出发,到解决问题,配置了镜像源,升级了g++。
Linux下cmake编译jsoncpp出现错误
CentOS7配置阿里云镜像源
centos7-更换源|升级gcc


http://www.ppmy.cn/ops/127142.html

相关文章

【设计模式-迪米特法则】

迪米特法则&#xff08;Law of Demeter&#xff0c;LoD&#xff09;&#xff0c;也称为最少知识原则&#xff08;Principle of Least Knowledge&#xff09;&#xff0c;是一种面向对象编程中的设计原则。它的核心思想是&#xff1a;一个对象应当尽可能少地了解其他对象&#x…

跨国SAP实施 - 美国 - 税法 - 咨询

美国企业所得税总览 税率 联邦公司所得税率&#xff1a; 自 2018 年起&#xff0c;美国的联邦公司所得税采用 固定税率 21% 的模式。 州及地方企业税&#xff1a; 除了联邦税外&#xff0c;各州和地方政府会征收企业所得税&#xff0c;税率和计算方式因州而异。州税率通常在 1…

Facebook的全球影响力:跨文化交流与信息共享的前沿

引言 在数字化时代&#xff0c;社交媒体已成为全球沟通的重要平台。自2004年成立以来&#xff0c;Facebook迅速发展成为拥有超过20亿活跃用户的巨头。其强大的影响力使其成为跨文化交流与信息共享的前沿平台。 跨文化交流的促进 Facebook的多语言支持让来自不同文化背景的用户…

jupyter notebook远程连接服务器

jupyter notebook远程连接服务器 文章目录 jupyter notebook远程连接服务器jupyter是什么配置步骤安装jupyter生成jupyter配置文件编辑jupyter配置文件设置密码ssh隧道 启动顺序jupyter添加kernel下载ipykernel包添加kernel 测试遇到的问题 jupyter是什么 Jupyter Notebook是一…

数据结构与算法:堆与优先队列的深入剖析

数据结构与算法&#xff1a;堆与优先队列的深入剖析 堆是一种特殊的树形数据结构&#xff0c;广泛应用于优先队列的实现以及各种高效的算法中&#xff0c;如排序和图算法。通过深入了解堆的结构、不同堆的实现方式&#xff0c;以及堆在实际系统中的应用&#xff0c;我们可以掌…

使用Yolov10和Ollama增强OCR

1. 训练自定义 Yolov10 数据集 利用物体检测增强 OCR 的第一步是在数据集上训练自定义 YOLO 模型。YOLO&#xff08;只看一遍&#xff09;是一种功能强大的实时对象检测模型&#xff0c;它将图像划分为网格&#xff0c;使其能够在一次前向传递中识别多个对象。这种方法非常适合…

jvm虚拟机调优实战

使用命令 jps查看进程使用jstat gc -1 5000查看内存占用和回收情况 正式测试 是否跑job区别。大量的job,部分用户点击的热数据 &#xff0c;不同时刻在跑 600-700对比 200 多了400-500m,代码原数据&#xff08;不占用堆区&#xff09;占了300m,所以 堆空间老年代&#xff08;90…

Python 多线程学习与使用

Python 多线程学习与使用 目录 引言&#xff1a;为什么需要多线程&#xff1f;Python中的线程基础 2.1 什么是线程&#xff1f; 2.2 Python的threading模块 2.3 创建和启动线程线程同步与互斥 3.1 竞态条件 3.2 锁&#xff08;Lock&#xff09; 3.3 可重入锁&#xff08;RLoc…