NodeJS “g++:错误:gcc版本9.3.0无法识别命令行选项'-std=gnu++14'“

atmip9wb  于 2023-02-21  发布在  Node.js
关注(0)|答案(2)|浏览(466)

我在VirtualBox中运行CentOS Linux release 7.9.2009 (Core),它是由Vagrant 2.2.19构建的,Ansible 2.9.25安装了所有依赖项。

gcc 9.3.0
python 3.6.8
node.js 16.13.1
npm 8.1.2

当ansible执行npm install时,我在g++: error: unrecognized command line option ‘-std=gnu++14’上出错。我在Stackoverflow上看到许多问题,其中的答案告诉我将gcc升级到版本〉= 4.9。但我已经有了,我仍然得到一个错误。
但是,有一个变通方法,它允许我运行npm install

sudo yum install -y centos-release-scl
sudo yum install -y devtoolset-9-gcc*
scl enable devtoolset-9 bash
npm install

但我必须在通过vagrant ssh登录CentOS后手动运行此操作。我对此变通方案不满意,因为它是手动的,并且npm istall必须通过编程运行,因此它不能解决我的问题。
我尝试从ansible playbook.yml执行scl内部的npm install

- name: Install centos-release-scl
  shell: yum install -y centos-release-scl
  become: yes

- name: Install devtoolset-9
  shell: yum install -y devtoolset-9-gcc*
  become: yes

- name: install packages based on package.json
  shell: |            
    scl enable devtoolset-9 bash
    npm install 
  become: yes

但没有成功。
有没有一种方法可以让ansible以编程方式运行npm install而不会出错?

kmbjn2e3

kmbjn2e31#

您可以继续使用gcc 4.8.5,但降级到NodeJS 14(如https://github.com/systemd/node-sd-notify/issues/29#issuecomment-1040909033中所指出的)。
注意:您可以在www.example.com下载NodeJS 14https://github.com/nodesource/distributions/blob/master/README.md#enterprise-linux-based-distributions

5n0oy7gb

5n0oy7gb2#

对于CentOS,运行此命令。
yum install gcc-c++
然后安装cmake。
yum install cmake
那就跑。
yum install centos-release-scl
安装开发工具集。
yum install devtoolset-8-gcc devtoolset-8-gcc-c++
启用开发工具集。
scl enable devtoolset-8 -- bash

相关问题