Minha equipe está desenvolvendo um produto em um sistema operacional Linux embarcado executando Node.js para back-end da web para configuração de dispositivos. Estamos portando nosso código para um sistema com um processador arm que não possui FPU de hardware. (O produto anterior tinha uma FPU.) Compilamos o Node.js com as seguintes opções do compilador:
--with-arm-float-abi=soft
e
--with-arm-float-abi=softfp
Mas em ambos os casos, o Node.js trava em tempo de execução com uma instrução ilegal porque está tentando fazer o ponto flutuante do hardware. Parece que está no motor V8 porque podemos rodar node --version
e ele imprime a versão e sai. Não verifiquei a fonte, mas presumo que não esteja iniciando o V8 apenas para imprimir o número da versão.
Alguma ideia do que estamos perdendo aqui? Eu poderia postar o makefile inteiro se isso ajudasse, mas parece um ruído para esse problema. Espero encontrar alguém que tenha criado o Node.js (uma versão posterior a 0.10) para um processador ARM que não tenha ponto flutuante de hardware e me diga quais opções de configuração/construção podem estar faltando. Ou diga-me que a opção acima deve funcionar e que estamos fazendo errado.
Responder1
Eu tive o mesmo problema. Eu resolvi adicionando no arquivoconfig.gypiestas duas linhas:
'v8_can_use_fpu_instructions%': 'false', 'v8_use_mips_abi_hardfloat%': 'false',