2014-07-08 86 views
4

我一直在我的linux X86机器上使用node-serialport,它工作的很好。现在我正试图在运行arm linux的嵌入式平台上安装node-serialport。我设法交叉编译节点本身并能够在目标平台上运行node/npm。在arm-linux上安装node-serialport模块

然而,仅仅运行npm install serialport不起作用:

binary not available for your platform 

,然后NPM启动使用节点GYP构建。不幸的是,构建需要Python这是不可用我的嵌入式平台(试图穿越编译蟒蛇没有成功:()

任何人都可以请帮我交叉编译串口我的Linux机器上?我已经尝试了很多在网络上的方法,但他们都失败一个原因或其他

回答

2

我设法做最后的交叉编译串行口,采用最丑陋的方法:)下面是工作的方法:

在本机x86 linux机器上, cd <your work area>

设置的cross_compiler工具环境变量:

export AR=arm-marvell-linux-gnueabi-ar 
export CC=arm-marvell-linux-gnueabi-gcc 
export CXX=arm-marvell-linux-gnueabi-g++ 
export LINK=arm-marvell-linux-gnueabi-g++ 
export npm_config_arch=arm 
export npm_config_nodedir=/home/ysoni/node 

现在运行NPM安装。请注意,由于npm安装坚持要编译64位软件包,所以我必须手动提供--package_name,--hosted_pa​​th等。我从serialport网站获得了这些参数。

npm install serialport --arch=x64 --target_arch=arm --remote_path=./serialport/v1.4.0/Release/ --package_name=node-v11-linux-ia32.tar.gz --staged_tarball=build/stage/serialport/v1.4.0/Release/node-v11-linux-ia32.tar.gz --hosted_path=https://node-serialport.s3.amazonaws.com/serialport/v1.4.0/Release/ --hosted_tarball=https://node-serialport.s3.amazonaws.com/serialport/v1.4.0/Release/node-v11-linux-ia32.tar.gz 

将生成一个包含.bin和serialport文件夹的node_modules目录。 现在,将node_modules的内容复制到您的target_platform。 我写了一个示例.js脚本来测试是否可以打开串口设备。脚本必须与node_modules位于同一目录中。

预计必须有最后一个路障!奇怪的是,我不得不做一些重命名。这可能不是您的平台所必需的:

busybox mv node_modules/serialport/build/serialport/v1.4.2/Release/node-v11-linux-arm/ node_modules/serialport/build/serialport/v1.4.2/Release/v8-3.11-linux-arm/ 

最后,我可以打开串口和准备好的内容。我真的希望有更简单的方法!

快乐黑客!

0

对于任何遇到这个帖子的人(我知道它是旧的),从版本5.x开始,您可以直接在设备上为ARM构建,例如Raspberry Pi。

我只是不想让想要使用这个库的开发人员被不必交叉编译的想法所关闭,因为我们都知道,这是一个痛苦!

+1

感谢您的信息尼古拉斯! –