Node.js嵌入式开发之(一)交叉编译

参考文档

本文档涉及到的目标硬件为全志H8(8核Cortex-A7,Armv7架构),但是对其他Arm芯片也有一定的借鉴意义,只需要更换交叉编译链即可。

开发环境介绍

  • 主机操作系统:Ubuntu14.04 64位
  • 目标平台:CQA83t 全志H8
  • 交叉工具链:arm-linux-gnueabihf,gcc4.9.2
  • node.js版本:6.10.0
  • 编译时间:2018.5.21

注意:node.js随着新版本的发布,已经对GCC的版本有一定要求了,具体要求可以查阅node.js代码目录下的BUILDING.md文件。node-v6.10.0对gcc编译器的要求为4.8.0以上。

设置本地编译链和交叉编译链

# 在/etc/bash.bashrc的最后增加如下指令
# Native Compiler
export AR_host="ar"
export CC_host="gcc"
export CXX_host="g++"
export LINK_host="g++"

# Allwinner H8 CQA83t cross compiler
export ARCH=arm
export PATH=/opt/toolchain/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/:$PATH
export CROSS_COMPILE=arm-linux-gnueabihf-
export CC=/opt/toolchain/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-gcc    
export CXX=/opt/toolchain/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-g++    
export LD=/opt/toolchain/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-ld
export AR=/opt/toolchain/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-ar
export AS=/opt/toolchain/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-as
export RANLIB=/opt/toolchain/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-ranlib
# 修改完成之后需要重启命令行才能生效
# 你可以通过如下指令来确认交叉编译链是否已经设置好
echo $CC 
# 当显示/opt/toolchain/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin/arm-linux-gnueabihf-gcc时表示交叉编译链
# 已经设置好
# 当需要更换为本机编译时屏蔽上面的指令即可

注意:

在进行node.js的编译之前除了设置好交叉编译器之外还要设置本地编译链,否则会出现和issues#18620相同的错误。

配置

./configure --prefix=/usr/local/H8/Ubuntu/node-6.10.0 --dest-cpu=arm --dest-os=linux 
            --cross-compiling --without-snapshot --with-arm-float-abi=hard

注意:

当配置node.js的arm版本时,必须指定--without-snapshot选项,否则会出现错误

编译&安装

make -j8
make install
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值