QuickJs交叉编译arm64,替换路由器上笨重的nodejs
QuickJs交叉编译arm64,替换路由器上笨重的nodejs
0x0 前言
新年快乐!
最近在新闻上刷到一个叫QuickJs的js引擎,主打的就是一个轻量,于是想到自己路由器上之前有一个别人用js写的奇葩所谓sm4加密库。
这个库虽然标榜是sm4,但是加密结果跟其他人的实现都完全不一样,我去看了半天它的代码也没看出哪里写的不标准,喂给ai也没解决。反正是就结果来说是独此一家,只能用它。
然后我为了用这个库,只好在我的路由器上装了个nodejs,测试下来那叫一个慢,不过也凑活能用,就一直没动他,今天看到了如此快速高效的实现,直接换掉它!
0x1 交叉编译
本人环境:wsl ubuntu24.04。
安装交叉编译工具链
1 | |
去QuickJs的release下载源代码解压:https://github.com/quickjs-zh/QuickJS/releases/tag/v20250426
然后修改它的Makefile:
1 | |
直接编译
1 | |
如果没有报错的话就没问题了
把生成的qjs上传到openwrt就可以使用了。
1 | |
0x2延申:命令行参数适配
在之前的nodejs脚本里获取命令行参数的方法是
1 | |
quickjs里没有process包,但是有一个全局变量scriptArgs,参考examples/pi_bigint.js:
1 | |
它是一个string Array,特别的,scriptArgs[0]是脚本自身的文件名,从1开始则是用户给定的输入。
举一例:
1 | |
QuickJs交叉编译arm64,替换路由器上笨重的nodejs
https://www.hakurei.org.cn/2026/01/01/quickjs-on-openwrt/