为什么Node.js 0.12.0版本中的V8需要SSE2 CPU指令?

为什么Node.js 0.12.0版本中的V8需要SSE2 CPU指令?,node.js,v8,sse2,Node.js,V8,Sse2,正在尝试将Node.js从0.10.x升级到0.12.0。注意到的第一件事是,我得到一个错误,即我的CPU不支持SSE2指令(事实上它们不支持) 尝试从源代码编译Node.js,但由于相同的原因失败。在deps/v8/src/ia32/assembler-ia32.cc中有一行 CHECK(cpu.has_sse2()); // SSE2 support is mandatory. 我想知道是否有办法摆脱Node.js 0.10.x中不需要的这种SSE2依赖关系。仅注释掉这一行没有帮助,它在

正在尝试将Node.js从0.10.x升级到0.12.0。注意到的第一件事是,我得到一个错误,即我的CPU不支持SSE2指令(事实上它们不支持)

尝试从源代码编译Node.js,但由于相同的原因失败。在
deps/v8/src/ia32/assembler-ia32.cc
中有一行

CHECK(cpu.has_sse2());  // SSE2 support is mandatory.

我想知道是否有办法摆脱Node.js 0.10.x中不需要的这种SSE2依赖关系。仅注释掉这一行没有帮助,它在生成过程中抛出了一个
非法指令
错误。

来自本演示幻灯片14:

您需要从源代码处编译

这样做:

./configure –dest-cpu=ia32
并将此行添加到config.gypi文件中的选项:

'v8_target_arch': 'x87',
运行
make

基本上,这个CPU有一个V8端口,它使用的是旧奔腾(i586)的指令集


它适用于我的节点v5.11.0和CPU。

我已经在上阅读了这篇文章。仍然想知道是否有一种方法可以在我的旧CPU上编译Node.js,它可以运行Node.js应用程序。真的是
npm
需要这些指令吗?您发布的文件路径是Node.js的依赖项V8(JavaScript引擎)。。。所以这是您构建V8的一个问题,本质上是吗?您是对的,这是V8的问题。您可能应该向V8开发小组提出这个问题。我不确定有没有解决办法。你有没有试过用它作为替代品?还有什么CPU不支持这个?SSE2已经存在了很长一段时间了,它是在2001年随奔腾4推出的。我对V8一无所知,但阅读一些在线文章让我觉得这与V8执行的代码生成有关(即V8发出直接由CPU执行的机器指令)。如果是这样,他们为什么把它拿走是可以理解的。虽然如果有关于如何应用补丁恢复对自己构建的支持的说明会很好,但是在NodeV5.4.1上尝试了这一点并成功了。不适用于v8.5.0它适用于IOT2040(Intel Quark CPU)上的节点6.12.3和7.10.1。我目前正在寻找最新版本的工作。v8 6.1.534中正式删除了对v8_target_arch='x87'的支持,请参阅。这意味着Node8.6是最新版本,但不幸的是,我在8.0、8.3、8.4、8.5和8.6中遇到了与X87相关的构建错误。