我的團隊正在嵌入式 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
我有同樣的問題。我透過在文件中添加來解決設定檔這兩行:
'v8_can_use_fpu_instructions%': 'false', 'v8_use_mips_abi_hardfloat%': 'false',