1)从nodejs v4版本开始已经发布了适用于嵌入式的运行环境,我的板子是cortex a5, armv7体系结构的,用最新版node-v9.9.0-linux-armv7l.tar.gz
node-v9.9.0-linux-arm64.tar.gz 21-Mar-2018 20:05 17909317
node-v9.9.0-linux-arm64.tar.xz 21-Mar-2018 20:07 10789576
node-v9.9.0-linux-armv6l.tar.gz 21-Mar-2018 15:19 17149093
node-v9.9.0-linux-armv6l.tar.xz 21-Mar-2018 15:37 10302588
node-v9.9.0-linux-armv7l.tar.gz 21-Mar-2018 11:40 17190798
node-v9.9.0-linux-armv7l.tar.xz
官网https://nodejs.org/download/release
2) 安装
cp node-v4.9.1-linux-armv7l.tar.gz /usr/local/
cd /usr/local/
tar xvf node-v4.9.1-linux-armv7l.tar.gz
3)也可以自己编译源码
./configure --prefix=/home/dong/nodejs --dest-cpu=arm --without-snapshot --without-ssl
make
make install
4)添加环境变量
PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/node-v4.9.1-linux-armv7l/bin"
export LD_LIBRARY_PATH=/usr/local/node-v4.9.1-linux-armv7l/lib:$LD_LIBRARY_PATH
5)测试实例 http_server_test.js
var http = require("http");
http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}).listen(8888);
console.log("nodejs start listen 8888 port!");
6)top 资源监控
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
v4.9.1
581 root 20 0 82616 18660 11968 S 0.0 7.4 0:03.52 node
v4.2.6
420 root 20 0 82760 18636 12476 S 0.0 7.4 0:02.09 node
v4.4.5
463 root 20 0 82880 18992 12792 S 0.0 7.6 0:02.08 node
v6.14.1
518 root 20 0 69668 20888 15188 S 0.0 8.3 0:02.55 node
v9.9.1
518 root 20 0 71240 25456 18840 S 0.0 10.2 0:02.55 node
PID PPID USER STAT VSZ %VSZ CPU %CPU COMMAND
966 783 root S 81288 32.0 0 0.0 node http_server.test.js
ulimit -s 512
980 783 root S 50568 19.9 0 0.0 node http_server.test.js
但是使用ulimit的一个后果就是它会影响到同一环境(同一shell或者终端)下后续启动的所有程序,如果修改成启动时设置的话就会影响到整个系统,这显然不是想要的。有两个方法可以能消除这个影响:
1)为需要修改栈大小的程序单独编写一个shell脚本,在程序启动前调用ulimit -s。因为子shell的环境不会影响到父shell,所以设置不会改变外部环境。
2)在程序运行前执行ulimit -s修改需要的栈大小,在程序运行后再次执行ulimit -s修改回原来的栈大小。
还是用v4.9.1划算,长期支持版,占资源少,也不影响功能实现。