交叉编译Node.js到OpenWrt(HG255D)
来源:互联网 发布:没有顶级域名的国家 编辑:程序博客网 时间:2024/05/22 21:20
操作系统:deepin linux 2013 或 ubuntu 13.04
1、安装交叉编译前,需要安装的包
sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt xsltproc2、下载OpenWrt的源代码
git clone git://git.openwrt.org/openwrt.gitcd openwrt./scripts/feeds update -a./scripts/feeds install -amake defconfigmake prereqmake menuconfig按照下图选择对应的项目
3.关键的一步
cd packagemkdir nodesudo gedit Makefile
## Copyright (C) 2006-2011 OpenWrt.org## This is free software, licensed under the GNU General Public License v2.# See /LICENSE for more information.#include $(TOPDIR)/rules.mkPKG_NAME:=node#目前最新版本PKG_VERSION:=v0.10.28PKG_RELEASE:=2PKG_SOURCE:=node-$(PKG_VERSION).tar.gzPKG_SOURCE_URL:=http://nodejs.org/dist/${PKG_VERSION}#更改版本时也要修改PKG_MD5SUM:=87768be7065d2120e71619948ab4bb2dGYP_DEFINES:=v8_use_mips_abi_hardfloat=false v8_can_use_fpu_instructions=falseLIBS:=-I$(TOOLCHAIN_DIR)/mipsel-openwrt-linux-uclibc/include/c++/4.8.3/ -I$(TOOLCHAIN_DIR)/mipsel-openwrt-linux-uclibc/include/c++/4.8.3/mipsel-openwrt-linux-uclibc/include $(INCLUDE_DIR)/package.mkdefine Package/node DEPENDS:=+libpthread +librt +uclibcxx SECTION:=lang CATEGORY:=Languages TITLE:=Node.js is a platform built on Chrome's JavaScript runtime URL:=http://nodejs.org/endefdefine Package/node/descriptionNode.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.endefdefine Build/Prepare$(call Build/Prepare/Default)$(CP) node.patch $(PKG_BUILD_DIR)/(cd $(PKG_BUILD_DIR); \patch -p1 < node.patch; \);endefdefine Build/Configure(cd $(PKG_BUILD_DIR); \export LIBS="$(LIBS)"; \export CFLAGS="$(TARGET_CFLAGS) $(LIBS)"; \export CXXFLAGS="$(TARGET_CXXFLAGS) $(LIBS)"; \ export GYPFLAGS="$(GYPFLAGS)"; \./configure --dest-cpu=mipsel --dest-os=linux --without-ssl --without-snapshot --with-arm-float-abi=soft; \);endefdefine Build/Compile$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) GYP_DEFINES="$(GYP_DEFINES)" CC="$(TARGET_CC)" CXX="$(TARGET_CXX)" CFLAGS="$(TARGET_CFLAGS) $(LIBS)" CXXFLAGS="$(TARGET_CXXFLAGS) $(LIBS) -nostdinc++" LDFLAGS="$(TARGET_LDFLAGS) -nodefaultlibs -luClibc++ -lc -lgcc -lgcc_s -lpthread" || touch $(PKG_BUILD_DIR)/deps/v8/build/common.gypi$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) GYP_DEFINES="$(GYP_DEFINES)" CC="$(TARGET_CC)" CXX="$(TARGET_CXX)" CFLAGS="$(TARGET_CFLAGS) $(LIBS)" CXXFLAGS="$(TARGET_CXXFLAGS) $(LIBS) -nostdinc++" LDFLAGS="$(TARGET_LDFLAGS) -nodefaultlibs -luClibc++ -lc -lgcc -lgcc_s -lpthread"endefdefine Package/node/installmkdir -p $(1)/usr/bin$(CP) $(PKG_BUILD_DIR)/out/Release/node $(1)/usr/bin/ln -s /usr/bin/node $(1)/usr/bin/nodejsendef$(eval $(call BuildPackage,node))
4.保存配置文件后编译: make V=99 (参数为输出调试信息)
5.把openwrt/bin/ramips/packages下的
node_v0.10.28-2_ramips_24kec.ipk
uclibcxx_0.2.4-1_ramips_24kec.ipk
拷贝到路由器,先安装uclibcxx_0.2.4-1_ramips_24kec.ipk库,再安装node_v0.10.28-2_ramips_24kec.ipk,安装node的时候要耐心等待,我第一次安装的时候等了一会没有响应,以为编译失败了,终止了安装进程,因此而耗费了很多时间。
后记:
看到恩山WIFI论坛网友soonco的帖子把编译过程中可能遇到的问题说得很明白,当时我也走过类似的弯路,便摘录下来作为补充
http://www.right.com.cn/forum/thread-141085-1-1.html
HG255D的CPU是Ralink RT3052,mipsel的make
要是启用ssl功能就把“--without-ssl”删掉
如果是ar71xx的u请把里面的mipsel替换成mips
如果是arm的cpu请把替换
LIBS:=-I$(TOOLCHAIN_DIR)/arm-openwrt-linux/include/c++/{gcc版本号}/ -I$(TOOLCHAIN_DIR)/arm-openwrt-linux/include/c++/{gcc版本号}/arm-openwrt-linux-uclibcgnueabi/
和
./configure --dest-cpu=arm --dest-os=linux --without-ssl --without-snapshot --with-arm-float-abi=soft;
以此类推
不管什么版本的openwrt版本里面的node make文件都是出自 https://github.com/giorrrgio/nodejs-linino
(实际上我文章中提到的make文件是出自https://github.com/brimstone/nodejs-openwrt,但是也有参考过nodejs-linino)
mips的建议用attitude adjustment分支编译,不然总出错
mipsel直接用trunk就成了
特别注意:attitude adjustment的gcc版本是4.6.3,而trunk的gcc是4.8.3
各个版本md5值:8b905b6013b82fb7076b02a6c881f9a6 node-v0.10.18.tar.gz
ea0be82fa626a991d140444644a08001 node-v0.10.19.tar.gz
784e7d7a8e29dfec88ddb2e72a895407 node-v0.10.20.tar.gz
774bc17875c042ac42ad2d96b9c96734 node-v0.10.21.tar.gz
1f1948de2ef50a1d8e2303a6ed6c0e45 node-v0.10.22.tar.gz
90d75d6d12890cad4ec9cdfefa5f3a3e node-v0.10.23.tar.gz
186726490c9a715cb7ee2ed37ccb5eb3 node-v0.10.24.tar.gz
153bdbf77b4473df2600b8ce123ef331 node-v0.10.25.tar.gz
15e9018dadc63a2046f61eb13dfd7bd6 node-v0.10.26.tar.gz
6a087d80ca490c16afbbeaf3ebdbb946 node-v0.10.27.tar.gz
87768be7065d2120e71619948ab4bb2d node-v0.10.28.tar.gz
e14ea9f46f9beecdf4e9423fb626c70b node-v0.10.29.tar.gz
应网友要求,提供下载地址如下
链接: http://pan.baidu.com/s/1dDrN78H 密码: taet
- 交叉编译Node.js到OpenWrt(HG255D)
- openwrt 编译node.js
- HG255D[OpenWrt]从入门到精通
- HG255D[OpenWrt]从入门到精通
- 交叉编译libpcap到openwrt ar71xx
- openwrt 编译node.js功能(解决Illegal instruction错误)
- 交叉编译OpenWRT
- openwrt交叉编译
- Openwrt 交叉编译HelloWord
- openwrt 交叉编译花生壳
- 交叉编译OpenWRT应用程序
- OpenWrt交叉编译helloworld
- openwrt 交叉编译花生壳
- HG255D[OpenWrt]刷机
- Openwrt配置Aria2(Hg255d)
- openwrt交叉编译自己的应用程序(openwrt应用开发)
- 建立OPENWRT交叉编译环境
- openwrt 构建交叉编译工具
- oepncms9 汉化
- The connection to adb is down, and a severe error has occured
- ubuntu下gcc和g++的安装
- 双网卡同时访问内外网
- Ubuntu 开机出现 grub rescue> 终端模式修复方法
- 交叉编译Node.js到OpenWrt(HG255D)
- ibatis无法生成主键的原因
- Android LruCache源码介绍
- 输入输出流与字节数组、字符串转换
- HTTP协议分析练习_1
- 黑马程序员----高薪技术(JavaBean)
- [leetcode]Reverse Words in a String
- OCP-1Z0-051-V9.02-1题
- Arduino 光敏电阻调节呼吸灯