Моя команда разрабатывает продукт на встроенной ОС Linux, работающей на Node.js для веб-бэкенда для конфигурации устройств. Мы переносим наш код на систему с процессором arm, у которой нет аппаратного FPU. (У предыдущего продукта был FPU.) Мы скомпилировали Node.js со следующими параметрами компилятора:
--with-arm-float-abi=soft
и
--with-arm-float-abi=softfp
Но в обоих случаях Node.js вылетает во время выполнения с недопустимой инструкцией, потому что пытается выполнить аппаратную операцию с плавающей точкой. Похоже, это в движке V8, потому что мы можем запустить его node --version
, он выводит версию и завершает работу. Я не проверял исходный код, но предполагаю, что он не запускает V8 только для того, чтобы вывести номер версии.
Есть идеи, что мы упускаем? Я мог бы выложить весь makefile, если это поможет, но для этой проблемы это выглядит как шум. Я надеюсь найти кого-то, кто собрал Node.js (версия после 0.10) для процессора ARM, у которого нет аппаратной плавающей точки, и сказать мне, какие параметры конфигурации/сборки нам могут не хватать. Или скажите мне, что указанный выше параметр должен работать, а мы просто делаем его неправильно.
решение1
У меня была та же проблема. Я решил ее добавлением в файлconfig.gypiэти две строки:
'v8_can_use_fpu_instructions%': 'false', 'v8_use_mips_abi_hardfloat%': 'false',