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

mar*_*lko 3 gcc node.js centos7

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

\n
gcc 9.3.0\npython 3.6.8\nnode.js 16.13.1\nnpm 8.1.2\n
Run Code Online (Sandbox Code Playgroud)\n

当 ansible 执行时,npm install我会出错g++: error: unrecognized command line option \xe2\x80\x98-std=gnu++14\xe2\x80\x99。我在 Stackoverflow 上看到了很多问题,答案告诉我将 gcc 升级到版本 >= 4.9。但我已经有了,但仍然收到错误。

\n

但是,有一个解决方法,它允许我运行npm install

\n
gcc 9.3.0\npython 3.6.8\nnode.js 16.13.1\nnpm 8.1.2\n
Run Code Online (Sandbox Code Playgroud)\n

但在我通过vagrant ssh. 我对此解决方法不满意,因为它是手动的并且必须npm istall以编程方式运行,因此它不能解决我的问题。

\n

我尝试从 ansible执行npm install内部:sclplaybook.yml

\n
sudo yum install -y centos-release-scl\nsudo yum install -y devtoolset-9-gcc*\nscl enable devtoolset-9 bash\nnpm install\n
Run Code Online (Sandbox Code Playgroud)\n

但它不起作用。

\n

有没有一种方法可以让我npm install以编程方式运行而ansible不会出现错误?

\n

小智 5

对于 CentOS,运行这个。

yum install gcc-c++
Run Code Online (Sandbox Code Playgroud)

然后安装cmake。

yum install cmake
Run Code Online (Sandbox Code Playgroud)

然后跑。

yum install centos-release-scl
Run Code Online (Sandbox Code Playgroud)

安装开发工具集。

yum install devtoolset-8-gcc devtoolset-8-gcc-c++
Run Code Online (Sandbox Code Playgroud)

启用开发工具集。

scl enable devtoolset-8 -- bash
Run Code Online (Sandbox Code Playgroud)