CentOS 7中使用npm安装zmq包失败求助
解决CentOS7下
npm install -g zmq编译报错(g不识别-std=gnu14) 问题根源
CentOS7默认自带的GCC/G版本为4.8.5,该版本仅支持到C11标准,而zmq Node.js包的编译需要C++14支持,因此会出现g++: error: unrecognized command line option '-std=gnu++14'的错误。你之前安装的Development Tools包含的仍是这个旧版本编译器,所以无法解决问题。
解决方案
步骤1:升级GCC/G++版本
通过CentOS的软件集合(SCL)源安装更高版本的编译器(以GCC 7为例,完全支持C++14):
- 安装SCL源:
sudo yum install centos-release-scl -y
- 安装GCC 7及对应的C++编译器:
sudo yum install devtoolset-7-gcc devtoolset-7-gcc-c++ -y
- 临时启用新版本编译器(仅当前Shell会话生效):
scl enable devtoolset-7 bash
- 如果需要永久生效,将启用命令添加到用户环境配置文件:
echo "source /opt/rh/devtoolset-7/enable" >> ~/.bashrc
执行后重新登录Shell即可。
步骤2:重新安装zmq
在启用了新版本编译器的Shell中,执行全局安装命令:
npm install -g zmq
可选优化:先安装系统级ZeroMQ库
提前安装系统的ZeroMQ开发库,可以避免node-gyp从零编译ZeroMQ源码,提升安装成功率:
sudo yum install zeromq-devel -y
再执行npm install -g zmq即可。
内容的提问来源于stack exchange,提问作者msrajwat298
相关产品推荐
相关产品推荐

