移植nodejs到嵌入式linux,让终端支持可使用js做些功能

简介: 移植nodejs到嵌入式linux,让终端支持可使用js做些功能

  Node.js是一个基于Chrome V8引擎的JavaScript运行环境.Node.js使用了一个事件驱动,非阻塞式I / O的模型,使其轻量又高效。


   嵌入式开发C / C ++和安卓原生使用的java的属于一个周期长和研发成本较高的工作,但是随着技术的发展,某些前端语言技术在大行其道,所以使用JS进行一些简单的对CPU负载要求低的工作可以使用,这样前端的人员就会扩展到服务器后端工作或者嵌入式工作,这样,保证跨平台开发的高效和前端和服务器端,嵌入式式终端开发的高效。


移植很简单,基本上是零错误。


我的配置如下:


先配置交叉工具链:


export CC = arm-linux-gnueabihf-gcc CXX = arm-linux-gnueabihf-g ++ LD = arm-linux-gnueabihf-ld
 RANLIB = arm-linux-gnueabihf-ranlib AR = arm-linux-gnueabihf-ar CFLAGS = -static CXXFLAGS = -static
 LDFLAGS = -static


配置配置


./configure --prefix = / usr / local / H8 / Ubuntu / node-6.10.0 --dest-cpu = arm --dest-os = linux 
           --without-snapshot --with-arm-float-abi =硬


最后做,


make install


放到开发板上试下:


root @ b503_lcd:/ bin#。/ node -v
v0.12.6
root @ b503_lcd:/ bin#node
> a = 1
1
> b = 2
2
> var http = require('http');
undefined
> var querystring = require('querystring');


写一个测试的JS文件,测试下:


var http = require('http');  
var querystring = require('querystring');  
var data = {  
    a: 123,  
    time: new Date().getTime()};//这是需要提交的数据  
var content = querystring.stringify(data);  
var options = {  
    hostname: '192.168.51.28',  
    port: 3000,  
    path: '/pay/pay_callback?' + content,  
    method: 'GET'  
};  
var req = http.request(options, function (res) {  
    console.log('STATUS: ' + res.statusCode);  
    console.log('HEADERS: ' + JSON.stringify(res.headers));  
    res.setEncoding('utf8');  
    res.on('data', function (chunk) {  
        console.log('BODY: ' + chunk);  
    });  
});  
req.on('error', function (e) {  
    console.log('problem with request: ' + e.message);  
});  
req.end();


测试结果如下:


root @ b503_lcd:/ bin#node test.js


请求问题:connect ECONNREFUSED 192.168.51.28:3000


由于机器没联网,也没开后台web服务器,所有提示了联网错误。


解析json更是方便:


root@b503_lcd:/usr/bin# node
>
> JSON.stringify("a=1")
'"a=1"'
> var person = new Object();
undefined
> person.name = 'chy';
'chy'
> person.age = 24;
24
> person.city= ['FuZhou', 'XiaMen'];
[ 'FuZhou', 'XiaMen' ]
> JSON.stringify(person);
'{"name":"chy","age":24,"city":["FuZhou","XiaMen"]}'


测试结果:虽然运行启动慢了点儿,但是想到可以用它来使用JS写些功能,做些东西,还是很不错的。


比如访问HTTP,处理文件,处理JSON等。


不过要想完全用它来做应用,估计还比较冒险,因为机器主频和性能都受限。不知道稳定性,速度和体验效果会是什么样。


不过这也是嵌入式开发的一种尝试,如果后续有机会,可以尝试下。


其实呢,也不用自己移植的,官网直接提供了ARM平台上可以用的编译好的版本。版本新,且稳定亲测,可以运行。


比如这个最新版本:


root @ b503_lcd:/ bin#node -v

v10.12.0


如果需要调用的NodeJSç语言写的驱动?可通过FFI在node.js的中调用动态链接库。


相关文章
|
4天前
|
JSON 机器人 Linux
推荐一款嵌入式Linux开源框架与封装-cpp-tbox
推荐一款嵌入式Linux开源框架与封装-cpp-tbox
59 3
|
4天前
|
JavaScript 前端开发 持续交付
【专栏】Vue.js和Node.js如何结合构建现代Web应用
【4月更文挑战第27天】本文探讨了Vue.js和Node.js如何结合构建现代Web应用。Vue.js作为轻量级前端框架,以其简洁易懂、组件化开发、双向数据绑定和虚拟DOM等特点受到青睐;而Node.js是高性能后端平台,具备事件驱动、非阻塞I/O、丰富生态系统和跨平台优势。两者结合实现前后端分离,高效通信,并支持热更新、持续集成、跨平台和多端适配,为开发高性能、易维护的Web应用提供强有力的支持。
|
4天前
报错/ ./node_modules/axios/lib/platform/index.js Module parse failed: Unexpected token (5:2)怎么解决?
报错/ ./node_modules/axios/lib/platform/index.js Module parse failed: Unexpected token (5:2)怎么解决?
|
4天前
|
Linux Shell
Linux 终端入门
Linux 终端入门
|
4天前
|
Linux Shell C++
Linux 终端中的目录切换
Linux 终端中的目录切换
|
4天前
|
Ubuntu 算法 Linux
嵌入式Linux的学习误区
该文指出了学习嵌入式Linux开发的两个常见误区。一是过分专注于学习桌面或服务器版Linux,而非关注嵌入式开发本身,实际上只需熟悉基本操作即可。二是试图在没有基础的情况下直接阅读Linux内核源代码,这是不切实际的,应先建立基础知识再进行源码学习。文章还提到了在嵌入式系统中获取和处理屏幕数据的示例,包括使用gsnap工具将framebuffer数据转为图像,以及涉及的交叉编译过程。
11 0
|
4天前
|
JavaScript API 开发者
深入了解Node.js的文件系统:Node.js文件系统API的使用与探索
【4月更文挑战第30天】本文深入探讨了Node.js的文件系统API,介绍了如何引入`fs`模块进行文件操作。内容包括异步读取和写入文件、删除文件、创建目录以及使用文件流进行高效操作。此外,还提到了文件系统的监视功能,帮助开发者全面掌握在Node.js中处理文件和目录的方法。
|
4天前
|
搜索推荐 Linux Perl
【专栏】Linux 中有趣的命令:`cowsay` 是 Linux 中一个趣味命令,可在终端创造“会说话的牛”效果
【4月更文挑战第28天】`cowsay` 是 Linux 中一个趣味命令,可在终端创造“会说话的牛”效果。基本用法是输入 `cowsay "text"`,展示带有文字的奶牛形象。使用 `-f` 可换不同牛的样式,`-e` 改变文字颜色。还有 `cowthink` 让牛思考,`cowbell` 添加铃铛声。可与其他命令结合,如 `grep` 或 `sed`,增加终端互动性与趣味性。不论新手还是老手,`cowsay` 都能为你的终端带来更多乐趣和个性化。
|
4天前
|
Web App开发 JavaScript 前端开发
js开发:请解释什么是Node.js,以及它的应用场景。
Node.js是基于V8引擎的JavaScript运行时,用于服务器端编程。以其事件驱动、非阻塞I/O模型著称,适用于高并发和实时应用。常见用途包括:构建Web服务器、实时应用(如聊天)、API服务、微服务、工具和命令行应用,以及搭配Electron开发桌面软件。
20 1