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. oldpython2. && ln -s /usr/bin/python2. python2.
cd ../../
make
~/android-ndk-r9d是ndk的路径
可执行文件为node-v0.12.4/out/Release/node 使用adb push node /data/local/tmp/node 就可以在手机执行
nodejs的交叉(跨平台)编译(to android)的更多相关文章
- [转]Windows中使用命令行方式编译打包Android项目
http://my.oschina.net/liux/blog/37875 网上很多用Ant来编译打包Android应用的文章,毕竟Ant是纯Java语言编写的,具有很好的跨平台性.今天想写个纯win ...
- Ubuntu16.04下搭建开发环境及编译tiny4412 Android系统【转】
本文转载自:http://blog.csdn.net/songze_lee/article/details/72808631 版权声明:本文为博主原创文章,未经博主允许不得转载. 1.安装ssh服务器 ...
- C++字符串常量跨平台编译问题
C++字符串常量跨平台编译问题(与字符串编码相关),有需要的朋友可以参考下. 1. 问题 在C++代码中,给一个string类型的变量赋值一个中文字符串常量,例如: string s = " ...
- Atitit.反编译apk android源码以及防止反编译apk
Atitit.反编译apk android源码以及防止反编译apk 1.1. Tool apk逆向助手1 1.2. 二.使用dex2jar + jd-gui 得到apk的java源码1 1.3. 用 ...
- 在Windows/Ubuntu下安装OpenGL环境(GLUT/freeglut)与跨平台编译(mingw/g++)
GLUT/freeglut 是什么? OpenGL 和它们有什么关系? OpenGL只是一个标准,它的实现一般自带在操作系统里,只要确保显卡驱动足够新就可以使用.如果需要在程序里直接使用OpenGL, ...
- win下 golang 跨平台编译
mac 下编译其他平台的执行文件方式请参看这篇文章,http://www.cnblogs.com/ghj1976/archive/2013/04/19/3030703.html 本篇文章是win下的 ...
- 项目androidAnt编译打包Android项目
时间紧张,先记一笔,后续优化与完善. Ant编译打包Android项目 在Eclipse中对Android项目停止编译和打包如果项目比较大的话会比较慢,所以改为Ant工具来停止编译和打包 Ant环境配 ...
- 如何把iOS代码编译为Android应用
新闻 <iPhone 6/6 Plus中国销量曝光:单月销量650万>:据iSuppli Corp.中国研究总监王阳爆料,iPhone 6和iPhone 6 Plus在国内受欢迎的情况大大 ...
- 一、cocos2d-x 3.0 final使用httpclient编译到android,须要用到的android.mk
今天写一个网络框架,在vs上面非常欢快的执行车,心想,尼玛!cocos2d-x 3.0这么方便,预计不久的将来我就能回家种地了,由于不用程序猿了,直接cocos2dstudio拖界面了= =!!. 写 ...
随机推荐
- listBox获取项的方法
获取所有项 ; i < LB.Items.Count;i++ )2 {3 str_arr.Add(LB.Items[i].ToString()); 4 } 获取指定项 string str=LB ...
- hibermate一对一关联
在hibernate.cfg.xml配置<mapping class="oneToOne.IDCard" />,以及实体类的get和set方法省略了. User类 @E ...
- fastJson简单实用
public class FastJsonText { @Test public void text(){ User user1 = new User(); user1.setName("健 ...
- 【luogu P3390 矩阵快速幂】 模板
题目链接:https://www.luogu.org/problemnew/show/P3390 首先要明白矩阵乘法是什么 对于矩阵A m*p 与 B p*n 的矩阵 得到C m*n 的矩阵 矩阵 ...
- Git命令篇
前文: Git有三种状态,你的文件可能处于其中之一:已提交(committed),已修改(modiffied)和已暂存(staged) 三个工作区域概念:Git仓库.工作目录以及暂存区 Git保存信息 ...
- Angularjs实例1
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- MQTT初始篇笔记整理
MQTT简介 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输),基于TCP/IP 协议栈而构建,虽然叫消息队列遥测传输,但是她与消息队列毫无关系,她 ...
- Openresty最佳案例 | 第9篇:Openresty实现的网关权限控制
转载请标明出处: http://blog.csdn.net/forezp/article/details/78616779 本文出自方志朋的博客 简介 采用openresty 开发出的api网关有很多 ...
- 优雅的QSignleton (一) Singleton单例实现
接下来笔者来介绍如何用QSingleton实现一个简单的单例. 代码如下. Singleton.cs namespace QFramework.Example { using UnityEngine; ...
- Python基础—13-面向对象及异常处理
面向对象及异常处理 内置函数 总结:__init__.__del__.__str__.attr系列.item系列.__call__ __str__与__repr__ 使用print/str方法时会自动 ...