Probleme beim Erstellen von Node.js v4 für ARM mit Software-Gleitkommaemulation

Probleme beim Erstellen von Node.js v4 für ARM mit Software-Gleitkommaemulation

Mein Team entwickelt ein Produkt auf einem eingebetteten Linux-Betriebssystem, auf dem Node.js für das Web-Backend zur Gerätekonfiguration läuft. Wir portieren unseren Code auf ein System mit einem Arm-Prozessor, der keine Hardware-FPU hat. (Das vorherige Produkt hatte eine FPU.) Wir haben Node.js mit den folgenden Compileroptionen kompiliert:

--with-arm-float-abi=soft

Und

--with-arm-float-abi=softfp

Aber in beiden Fällen stürzt Node.js zur Laufzeit mit einer ungültigen Anweisung ab, weil es versucht, Hardware-Gleitkommazahlen zu verarbeiten. Es scheint an der V8-Engine zu liegen, denn wir können es ausführen node --version, es druckt die Version und beendet sich. Ich habe die Quelle nicht überprüft, aber ich gehe davon aus, dass V8 nicht nur gestartet wird, um die Versionsnummer auszugeben.

Irgendeine Idee, was uns hier entgeht? Ich könnte das gesamte Makefile posten, wenn es helfen würde, aber es scheint mir zu viel Lärm um dieses Problem zu machen. Ich hoffe, jemanden zu finden, der Node.js (eine Version nach 0.10) für einen ARM-Prozessor ohne Hardware-Gleitkommazahlen erstellt hat und mir sagen kann, welche Konfigurations-/Build-Optionen uns möglicherweise entgehen. Oder mir sagen, dass die obige Option funktionieren sollte und wir es einfach falsch machen.

Antwort1

Ich hatte das gleiche Problem. Ich habe es gelöst, indem ich die Datei hinzugefügt habeconfig.gypidiese beiden Zeilen:

'v8_can_use_fpu_instructions%': 'false', 'v8_use_mips_abi_hardfloat%': 'false',

verwandte Informationen