我的团队正在开发一款在嵌入式 Linux 操作系统上运行 Node.js 的产品,用于设备配置的 Web 后端。我们正在将代码移植到带有 Arm 处理器且没有硬件 FPU 的系统上。(之前的产品确实有 FPU。)我们使用以下编译器选项编译了 Node.js:
--with-arm-float-abi=soft
和
--with-arm-float-abi=softfp
但在这两种情况下,Node.js 都会在运行时因非法指令而崩溃,因为它试图执行硬件浮点运算。它似乎在 V8 引擎中,因为我们可以运行它node --version
,它会打印版本并退出。我没有检查源代码,但我推测它不会启动 V8 只是为了打印版本号。
知道我们这里遗漏了什么吗?如果有帮助的话,我可以发布整个 makefile,但这似乎对这个问题没有帮助。我希望找到一个为没有硬件浮点的 ARM 处理器构建过 Node.js(0.10 之后的版本)的人,并告诉我我们可能遗漏了哪些配置/构建选项。或者告诉我上面的选项应该有效,只是我们做错了。
答案1
我有同样的问题。我通过添加文件解决了配置.gypi这两行:
'v8_can_use_fpu_instructions%': 'false', 'v8_use_mips_abi_hardfloat%': 'false',