2014-07-08 128 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

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