Mi equipo está desarrollando un producto en un sistema operativo Linux integrado que ejecuta Node.js para el back-end web para la configuración del dispositivo. Estamos transfiriendo nuestro código a un sistema con un procesador arm que no tiene una FPU de hardware. (El producto anterior tenía una FPU). Hemos compilado Node.js con las siguientes opciones de compilación:
--with-arm-float-abi=soft
y
--with-arm-float-abi=softfp
Pero en ambos casos, Node.js falla en tiempo de ejecución con una instrucción ilegal porque intenta ejecutar hardware de punto flotante. Parece estar en el motor V8 porque podemos ejecutarlo node --version
, imprime la versión y sale. No he comprobado la fuente, pero supongo que no está iniciando V8 solo para imprimir el número de versión.
¿Alguna idea de lo que nos estamos perdiendo aquí? Podría publicar el archivo MAKE completo si fuera de ayuda, pero parece ruido para este problema. Espero encontrar a alguien que haya creado Node.js (una versión posterior a 0.10) para un procesador ARM que no tenga punto flotante de hardware y que me diga qué opciones de configuración/compilación nos podrían faltar. O dígame que la opción anterior debería funcionar y simplemente la estamos haciendo mal.
Respuesta1
Yo tuve el mismo problema. Lo resolví agregando el archivo.config.gypiestas dos líneas:
'v8_can_use_fpu_instructions%': 'false', 'v8_use_mips_abi_hardfloat%': 'false',