OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6032|回复: 14

分享移植node到正点原子Linux开发板的经验

[复制链接]

3

主题

400

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1750
金钱
1750
注册时间
2015-6-11
在线时间
309 小时
发表于 2020-5-6 13:43:41 | 显示全部楼层 |阅读模式
  将Nodejs从源码编译并且移植到arm-linux并不困难,官方基本把问题都解决了,不过想快速体验node可使用我编译完成的node.tar.bz2,只要解压并添加到全局环境就可以使用。
在开发板上创建目录/usr/node,指令
  1. cd /usr/
  2. mkdir node
复制代码
  将node.tar.bz2上传到上述文件夹,使用tar指令解压
  1. cd /usr/node
  2. tar –xvf node.tar.bz2
复制代码
将node路径添加到rcS中,Path添加/usr/node/bin如下:
  1. vi /etc/init.d/rcS
复制代码
  PATH添加usr/node/bin, 保存后执行
  1. source /etc/init.d/rcS
复制代码
即可更新PATH。
此时可通过node –v查看是否安装成功,资源和文件见附件。
Node的强大正是对于网络的处理,可以实现简单的服务器进行测试,代码见server.js
vi server.js创建文件如下:
  1. var http=require('http');

  2. var server=http.createServer(function(req, res){
  3.     console.log('start server');
  4.     res.write('success');
  5.     res.end();
  6. });

  7. server.listen(8080);
复制代码
执行node server.js
       此时服务器就正常执行了,可通过浏览器访问如下:

3.png
4.png

node资源包.zip

27.7 MB, 下载次数: 202

包含完整node的资源包

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2018-12-27
在线时间
0 小时
发表于 2020-5-6 13:53:18 | 显示全部楼层
回复 支持 反对

使用道具 举报

3

主题

400

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1750
金钱
1750
注册时间
2015-6-11
在线时间
309 小时
 楼主| 发表于 2020-5-6 13:53:19 | 显示全部楼层
本帖最后由 zc123 于 2020-5-6 21:25 编辑

源码下载在https://nodejs.org/dist/v0.12.9/下的node-v0.12.9.tar.gz(资源包里已经下载完成),之所以选择这版本是因为后续版本目前我有两个问题无法解决:
1)      需要更高版本的gcc和g++ 6.0以上
2)      对于python中run.py执行出错,很难分析
不过对于嵌入式来说,这个版本已经足够用了,下面开始编译的流程。
    编译基础要求:
1)      已安装交叉编译环境arm-linux-guneabihf-xxx
2)      已安装python2.7及以上版本
确定上述信息后,将node-v0.12.9.tar.gz上传到Ubuntu中的/usr/code/node/(后续命令用到该路径,如果修改路径需要相应更改,如果不存在,则可以使用mkdir指令创建), 并解压。
  1. cd /usr/code/node
  2. mkdir install
  3. tar -xvf node-v0.12.9.tar.gz
复制代码
进入node-v0.12.9中,按照顺序执行编译相关的指令
  1. cd node-v0.12.9/

  2. 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

  3. ./configure --prefix=/usr/code/node/install --dest-cpu=arm --dest-os=linux --without-snapshot

  4. make –j4
  5. make install
复制代码
如果报C Compile error,需要确保两点:
1.在全局范围内能否访问arm-linux-gnueabihf-gcc
2.python能否直接访问,且python --version版本为Python2.7~python3之间
如果不满足上述两点,先解决上述问题在编译。
  编译完成后进入刚才创建的install文件夹, 并使用tar指令打包
  1. cd ../install
  2. tar -vcjf node.tar.bz2 *
复制代码
即可获取打包文件,后续按照第一节处理即可。
回复 支持 反对

使用道具 举报

9

主题

776

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5304
金钱
5304
注册时间
2019-9-25
在线时间
438 小时
发表于 2020-5-6 20:10:14 | 显示全部楼层
顶一哈
回复 支持 反对

使用道具 举报

9

主题

890

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2391
金钱
2391
注册时间
2019-9-25
在线时间
397 小时
发表于 2020-5-6 20:32:27 | 显示全部楼层
顶,很赞
回复 支持 反对

使用道具 举报

2

主题

712

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2179
金钱
2179
注册时间
2018-8-27
在线时间
258 小时
发表于 2020-5-8 09:53:08 | 显示全部楼层
厉害了哦  兄嘚!
森罗万象
回复 支持 反对

使用道具 举报

7

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
397
金钱
397
注册时间
2013-1-14
在线时间
75 小时
发表于 2020-5-11 20:33:54 | 显示全部楼层
v0.12.9 编译出来这么小的?
我在I.MX8MQ上移植了V12.16.3 编译出来bin文件 900多M
天道酬勤
回复 支持 反对

使用道具 举报

31

主题

187

帖子

0

精华

高级会员

Rank: 4

积分
699
金钱
699
注册时间
2014-9-19
在线时间
193 小时
发表于 2020-6-12 18:25:37 | 显示全部楼层
httpd  看看文件系统里带不
回复 支持 反对

使用道具 举报

3

主题

400

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1750
金钱
1750
注册时间
2015-6-11
在线时间
309 小时
 楼主| 发表于 2020-6-12 18:29:35 | 显示全部楼层
aaaaalaode 发表于 2020-6-12 18:25
httpd  看看文件系统里带不

和node的功能还是差远了
回复 支持 反对

使用道具 举报

12

主题

56

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2020-3-11
在线时间
17 小时
发表于 2020-6-12 23:33:51 | 显示全部楼层
顶一个
回复 支持 反对

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2012-11-23
在线时间
5 小时
发表于 2020-10-21 14:29:30 | 显示全部楼层
试试看
回复 支持 反对

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2012-11-23
在线时间
5 小时
发表于 2020-10-21 16:06:00 | 显示全部楼层
大牛你好,我这边自己编译了一下,存在段错误。

[root@/data1/node/bin]#./node -h
Usage: node [options] [ -e script | script.js ] [arguments]
       node debug script.js [arguments]

Options:
  -v, --version        print node's version
  -e, --eval script    evaluate script
  -p, --print          evaluate script and print result
  -i, --interactive    always enter the REPL even if stdin
                       does not appear to be a terminal
  --no-deprecation     silence deprecation warnings
  --throw-deprecation  throw an exception anytime a deprecated function is used
  --trace-deprecation  show stack traces on deprecations
  --v8-options         print v8 command line options
  --max-stack-size=val set max v8 stack size (bytes)
  --enable-ssl2        enable ssl2
  --enable-ssl3        enable ssl3

Environment variables:
NODE_PATH              ':'-separated list of directories
                       prefixed to the module search path.
NODE_MODULE_CONTEXTS   Set to 1 to load modules in their own
                       global contexts.
NODE_DISABLE_COLORS    Set to 1 to disable colors in the REPL

Documentation can be found at http://nodejs.org/
[root@/data1/node/bin]#
[root@/data1/node/bin]#
[root@/data1/node/bin]#./node -v
v0.12.9
[root@/data1/node/bin]#
[root@/data1/node/bin]#./node
Segmentation fault
[root@/data1/node/bin]#./node server.js
Segmentation fault
[root@/data1/node/bin]#
回复 支持 反对

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2012-11-23
在线时间
5 小时
发表于 2020-10-21 16:22:20 | 显示全部楼层
为啥我移植的有段错误。。
回复 支持 反对

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2012-11-23
在线时间
5 小时
发表于 2020-10-21 16:23:19 | 显示全部楼层
[root@/data1/node/bin]#./node -v
v0.12.9
[root@/data1/node/bin]#./node  -h
Usage: node [options] [ -e script | script.js ] [arguments]
       node debug script.js [arguments]

Options:
  -v, --version        print node's version
  -e, --eval script    evaluate script
  -p, --print          evaluate script and print result
  -i, --interactive    always enter the REPL even if stdin
                       does not appear to be a terminal
  --no-deprecation     silence deprecation warnings
  --throw-deprecation  throw an exception anytime a deprecated function is used
  --trace-deprecation  show stack traces on deprecations
  --v8-options         print v8 command line options
  --max-stack-size=val set max v8 stack size (bytes)
  --enable-ssl2        enable ssl2
  --enable-ssl3        enable ssl3

Environment variables:
NODE_PATH              ':'-separated list of directories
                       prefixed to the module search path.
NODE_MODULE_CONTEXTS   Set to 1 to load modules in their own
                       global contexts.
NODE_DISABLE_COLORS    Set to 1 to disable colors in the REPL

Documentation can be found at http://nodejs.org/
[root@/data1/node/bin]#
[root@/data1/node/bin]#./node  
node       npm        server.js
[root@/data1/node/bin]#./node  server.js
Segmentation fault
[root@/data1/node/bin]#./node  -e  server.js
Segmentation fault
[root@/data1/node/bin]#./node  debug  server.js
Segmentation fault
[root@/data1/node/bin]#
回复 支持 反对

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2012-11-23
在线时间
5 小时
发表于 2020-10-21 16:24:10 | 显示全部楼层
[root@/data1/node/bin]#./node -v
v0.12.9
[root@/data1/node/bin]#./node  -h
Usage: node [options] [ -e script | script.js ] [arguments]
       node debug script.js [arguments]

Options:
  -v, --version        print node's version
  -e, --eval script    evaluate script
  -p, --print          evaluate script and print result
  -i, --interactive    always enter the REPL even if stdin
                       does not appear to be a terminal
  --no-deprecation     silence deprecation warnings
  --throw-deprecation  throw an exception anytime a deprecated function is used
  --trace-deprecation  show stack traces on deprecations
  --v8-options         print v8 command line options
  --max-stack-size=val set max v8 stack size (bytes)
  --enable-ssl2        enable ssl2
  --enable-ssl3        enable ssl3

Environment variables:
NODE_PATH              ':'-separated list of directories
                       prefixed to the module search path.
NODE_MODULE_CONTEXTS   Set to 1 to load modules in their own
                       global contexts.
NODE_DISABLE_COLORS    Set to 1 to disable colors in the REPL

Documentation can be found at http://nodejs.org/
[root@/data1/node/bin]#
[root@/data1/node/bin]#./node  
node       npm        server.js
[root@/data1/node/bin]#./node  server.js
Segmentation fault
[root@/data1/node/bin]#./node  -e  server.js
Segmentation fault
[root@/data1/node/bin]#./node  debug  server.js
Segmentation fault
[root@/data1/node/bin]#


回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-24 11:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表