nodejs的交叉(跨平台)編譯(to android)


nodejs的二進制包有兩種安裝方式node-gyp以及node-pre-gyp

這兩條命令會寫入該包的安裝腳本。

node-gyp是使用gyp工具編譯源碼,因此必須指定交叉編譯器(參見http://n8.io/cross-compiling-nodejs-v0.8/)

node-pre-gyp首先考慮從package.json定義的遠程地址下載二進制包,若無,則依然交給node-gyp編譯

node-pre-gyp指定平台和架構的參數為 --target_platform="" --target_arch=""(參見https://www.npmjs.com/package/node-pre-gyp)

以上已知后寫入腳本。

例子:

#設置交叉編譯器
export AR=~/node-v0.12.4/android-toolchain/arm-linux-androideabi/bin/ar
export CC=~/node-v0.12.4/android-toolchain/arm-linux-androideabi/bin/gcc 
export CXX
=~/node-v0.12.4/android-toolchain/arm-linux-androideabi/bin/g++
export LINK=~/node-v0.12.4/android-toolchain/arm-linux-androideabi/bin/g++
#定義需要編譯的庫列表
m=(hiredis iconv sqlite3)
for i in ${m[*]};
do
cd node_modules/$i
cnpm run
-script install --target_platform="android" --target_arch="arm"
cd ..
/../
done

注意nodejs的版本是否一致,如果因為node版本不一致導致運行時找不到文件請手工修改路徑。工具鏈的生成看最后一段。

最后是node的編譯

wget http://nodejs.org/dist/v0.12.4/node-v0.12.4.tar.gz
tar xvf node-v0.12.4.tar.gz
cd node-v0.12.4
sed -i "s/arm-linux-androideabi-4.7/arm-linux-androideabi-4.8/g" android-configure
source ./android-configure ~/android-ndk-r9d
cd android-toolchain/bin
mv python2.7 oldpython2.7 && ln -s /usr/bin/python2.7 python2.7
cd ../../
make
~/android-ndk-r9d是ndk的路徑
可執行文件為node-v0.12.4/out/Release/node 使用adb push node /data/local/tmp/node 就可以在手機執行


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM