### 前言

最近在更新nodejs版本,一直提示gcc版本过低

g++: error: unrecognized '-std=c++17'

先查了一下当前的gcc版本

$ gcc -v
...
gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)

先了解一下gccc++的依赖关系:

  • C++17

gcc7完全支持,gcc6和gcc5部分支持,gcc6支持度当然比gcc5高,gcc4及以下版本不支持。

  • C++14

    gcc5就可以完全支持,gcc4部分支持,gcc3及以下版本不支持。

  • C++11

    gcc4.8.1及以上可以完全支持。gcc4.3部分支持,gcc4.3以下版本不支持。

因此想要解决该问题,需要升级gcc到最少gcc7的版本

官方有详情的安装说明文档:https://gcc.gnu.org/install/

下载

在下载页 https://bigsearcher.com/mirrors/gcc/releases/ 找到合适的版本,我选择了最新的版本https://bigsearcher.com/mirrors/gcc/releases/gcc-11.2.0/gcc-11.2.0.tar.gz

文件有100多M,如果是国内可能比较慢,建议用其它下载工具,如迅雷

安装

tar zxvf gcc-11.2.0.tar.gz
cd gcc-11.2.0
# 下载依赖
./contrib/download_prerequisites
# 配置
./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
# 检测
make -k check
# 安装
make install