Centos7 升级GCC编译器

news/2024/6/29 11:51:28 标签: 编译器, c++

最近项目使用C++11原子操作,编译代码无法通过,提示no matching function for call to ‘atomic_init(std::atomic_uint*, unsigned int&),查找资料,也找不到stdatomic.h文件,感觉应该是当前GCC版本无法支持原子操作,我的版本是GCC4.8.5。

有人说:因为GCC官网说:gcc在4.7就支持c11标准了。然而C11标准说:你得有stdatomic.h这个头文件,作为C语言标准库自带原子操作库。这年头怎么能没有原子操作呢?然而,gcc忘了把stdatomic.h加入进去。这个BUG在版本4.9修复了。考虑到CentOS 7的yum install gcc安装的竟然是4.8.5,所以想升级GCC版本解决该问题。

这里参考了一篇博文:https://www.vpser.net/manage/centos-6-upgrade-gcc.html

CentOS 7虽然已经出了很多年了,但依然会有很多人选择安装CentOS 6,CentOS 6有些依赖包和软件都比较老旧,如今天的主角gcc编译器,CentOS 6的gcc版本为4.4,CentOS 7为4.8。gcc 4.8最主要的一个特性就是全面支持C++11,如果不清楚什么用的也没关系,简单说一些C++11标准的程序都需要gcc 4.8以上版本的gcc编译器编译,如MySQL 8.0版本(8.0.16以上版本是C++14标准,需gcc 5.3以上版本)。

CentOS 6虽然是gcc 4.4的老旧版本,但是也可以升级gcc来安装gcc 4.8,我们今天就不采用编译安装的方法了,gcc安装起来非常费时,我们采用CentOS的一个第三方库SCL(软件选集),SCL可以在不覆盖原系统软件包的情况下安装新的软件包与老软件包共存并且可以使用scl命令切换,不过也有个缺点就是只支持64位的。

确定当前gcc版本,执行命令:gcc --version

一般如果需要升级gcc至4.8或更高版本,建议直接采用安装SCL源之后安装devtoolset-6(devtoolset-6目前gcc版本为6.3),因为devtoolset-4及之前的版本都已经结束支持,只能通过其他方法安装

我升级到8.3

yum -y install centos-release-scl
yum -y install devtoolset-8-gcc devtoolset-8-gcc-c++ devtoolset-8-binutils
scl enable devtoolset-8 bash

需要注意的是scl命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。
如果要长期使用gcc 8.3的话:

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

 

 

 

 

 

 


http://www.niftyadmin.cn/n/814967.html

相关文章

算法之排序

一、快排 public class 快速排序 {/**性质:1、时间复杂度:O(nlogn) 2、空间复杂度:O(logn) 3、非稳定排序 4、原地排序*/public static void main(String[] args) {int[] num {64,55,3,266,232,66,44};quickSort(num,0,num.length-1);for (i…

Mosquitto 权限管理

Mosquitto 权限是根据 topic 控制的、类似与目录管理。您可以设定每个用户订阅/发布权限、也可以设定每个用户可访问的topic范围、从而达到权限控制的目的。 1: 给这两个用户配置不同的权限 admin1 设置为订阅权限,并且只能访问的主题为"root/topi…

课程网址

https://edu.csdn.net/topic/ai30?utm_sourceblogpopup 转载于:https://www.cnblogs.com/hmit/p/11214281.html

设计模式深入理解-工厂模式

工厂模式属于创建型模式,它提供了一种创建对象的最佳方式,在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。工厂顾名思义就是创建产品,根据产品是具体产品还…

最大子序和 单调队列

最大子序和 Time Limit: 1 Sec Memory Limit: 256 MB Description 输入一个长度为n的整数序列,从中找出一段不超过m的连续子序列,使得整个序列的和最大。 例如 1,-3,5,1,-2,3 当m4时,S51-237 当m2或m3时,S516。 Input 第一行两个数…

推荐系统学习 -- 好的推荐系统

推荐系统的主要任务:联系 用户 和 信息,一方面帮助用户发现对自己 有价值的信息,另一方面让信息能够展现在对它感兴趣的用户面前,从而实现信息消费者和信息生产者的双赢。 也就是帮助用户解决 信息过载(information ov…

Android之ContentProvider总结

1.适用场景 1) ContentProvider为存储和读取数据提供了统一的接口 2) 使用ContentProvider,应用程序可以实现数据共享 3) android内置的许多数据都是使用ContentProvider形式,供开发者调用的(如视频,音频,图片,通讯录等…

C#_WinForm程序只允许运行一个实例

只允许程序运行一个实例,也就是说你只能双击运行一个程序一次,第二次双击运行将看到某某警告,只有关闭程序再开。 方法有很多种:Mutex线程互斥变量法,进程查找法,全局原子法。其中第一种简单实用&#xff0…