我有一台cpu为armv7但没有fpu的设备。

我可以使用选项--with-arm-float-abi = soft来编译 Node ,但是当我运行“Node ”时,发生了“非法指令(内核已转储)”。

root@router:/tmp/target/bin# ./node -v
v4.2.4
root@router:/tmp/target/bin# ./node --v8-options | head -2
target arm v7 vfp3 soft
ARMv7=1 VFP3=1 VFP32DREGS=0 NEON=0 SUDIV=0 UNALIGNED_ACCESSES=1
MOVW_MOVT_IMMEDIATE_LOADS=0 COHERENT_CACHE=0 USE_EABI_HARDFLOAT=0

工具objdump向我展示了正在使用的指令(例如vpush,vpop ...)不受我的cpu(不带fpu的arm v7)的支持。

更进一步,我发现 Node 源中的openssl和v8使用fpu的指令。

配置行如下
./configure \
    --prefix=target \
    --dest-cpu=arm \
    --dest-os=linux \
    --without-snapshot \
    --with-arm-float-abi=soft \
    --fully-static

有人可以告诉我如何在不支持fpu的情况下编译node-v4.2.4吗?

源代码:nodejs-v4.2.2

ARM 版本:Cortex-A9 Floating-Point Unit (FPU)(Optional)

最佳答案

经过多次尝试,我改用node-v0.10.14,它在不支持fpu的情况下也能很好地工作。 ;-)

所以我仍然不知道如何在不支持fpu的情况下编译nodejs-v4.2.2。

关于c++ - 如何在没有fpu的情况下使用armv7编译node-v4.2.4?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34871072/

10-09 13:35