CentOS 6/7 如何优雅的升级gcc版本

npm centos7 运维 · best · 于 2年前 发布 · 1921 次阅读

背景

在用npm 编译前端项目的时候莫名的出现了错误

g++: 错误:unrecognized command line option ‘-std=c++14’

查阅资料才明白是g++版本不够.

-std=c++14 需要g++5.2以上,而centos 7 默认的g++只有4.8.5。所以,所有要做的事情,是升级g++。

可以查看当前系统g++版本

g++ --version

通过yum升级

网上很多大神都习惯用编译方式安装g++, 但是为了编译安装可能还会出现各种错误, 所以我们首选采用yum方式安装.

首先是检查官方库了, 看看有没有可以用的devtoolset-7-gcc-c++.x86_64

yum list | grep gcc

Software Collections 仓库安装

通常情况下是没有, 我们需要安装一个特殊仓库 Software Collections, 如果你跑着 RHEL/CentOS ,那应该先试试 Software Collections,因为这是 Red Hat 唯一支持的新软件包源。 Software Collections 为 CentOS 设立了专门的仓库,安装和管理都和其它第三方仓库一样。但如果你用的是 RHEL 的,情况就有点不同了,具体请参考 RHEL 的解决方法。Software Collections 同样支持 Fedora 和 Scientific Linux 。

实际上 CentOS extra 仓库有两个包关于 SCL,一个是 centos-release-scl 还有一个是 centos-release-scl-rh,它们两者的区别在于一个是 SoftwareCollection 小组所有的打包 RPM,另一个则只包含 RedHat 官方打包内容,个人建议使用后者。

一键安装

yum install centos-release-scl-rh

安装之后, 再查看一下可用的gcc包就很不一样了, 大家可以看到有许多devtoolset-{x}-gcc.x86_64的包

yum list | grep gcc

devtoolset 安装

我选择安装了devtoolset-7, GCC version 7的工具包

yum install devtoolset-7-gcc devtoolset-7-gcc-c++

切换GCC版本

scl enable devtoolset-7 bash

测试结果:输入

g++ --version

可以看见输出:

Copyright (C) 2017 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

参考: CentOS 上最佳的第三方仓库

本文由 best 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。

共收到 0 条回复
没有找到数据。
添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册