在用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
网上很多大神都习惯用编译方式安装g++, 但是为了编译安装可能还会出现各种错误, 所以我们首选采用yum方式安装.
首先是检查官方库了, 看看有没有可以用的devtoolset-7-gcc-c++.x86_64
yum list | grep gcc
通常情况下是没有, 我们需要安装一个特殊仓库 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-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 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。