在arm-linux上安装node-serialport模块

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

但是,简单地运行npm install serialport不起作用:

 binary not available for your platform 

然后npm使用node-gyp启动构build。 不幸的是,构build需要我的embedded式平台上没有的Python(试图交叉编译python没有成功:()

任何人都可以请帮我在Linux机器上交叉编译串口? 我在网上尝试了很多方法,但都是因为某种原因失败了

我终于做了交叉编译串口,使用最丑陋的方法:)以下是工作的方法:

在本地x86 Linux框中, cd <your work area>

设置cross_compiler工具环境variables:

 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 install。 请注意,由于npm安装坚持我应该编译64位软件包,所以我不得不提供手动–package_name,–hosted_pa​​th等我从串口网站得到这些params。

 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脚本来testing是否可以打开串行设备。 该脚本必须位于与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/ 

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

快乐黑客!

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

我不希望开发者想要使用这个库,因为我们都知道,这是一个痛苦!