arm环境打包lua脚本依赖的cjson库
cJSON
Ultralightweight JSON parser in ANSI C
项目地址:https://gitcode.com/gh_mirrors/cj/cJSON
免费下载资源
·
问题背景
1、在envoy中采用lua脚本执行业务逻辑,需要解析json字符串
2、采用lua-cjson进行解析操作
问题点
1、需要在x86、arm两种环境中进行执行,因此该cjson.so需要在两种环境下分别进行编译。在lua-cjson进行编译的时候,需要依赖lua基础环境。在x86环境中,采用lua-jit作为lua环境进行的安装。
版本分别为:
luajit-2.0.5
lua-cjson-2.1.0
参考:lua-jit、lua-cjson编译打包
但是在arm环境中,lua-jit仅仅在后续版本中提供了简单的支持,这时侯编译lua-cjson需要的依赖都缺失了。
解决
采用lua作为基础环境进行安装。
1、需要采用lua5.1,5.3版本会报错
2020/02/19 06:59:52 [error] 29524#29524: *1 lua entry thread aborted: runtime error: error loading module 'cjson' from file '/usr/local/lib/lua/5.1/cjson.so':
/usr/local/lib/lua/5.1/cjson.so: undefined symbol: lua_rotate
stack traceback:
coroutine 0:
[C]: in function 'require'
原因应该是envoy运行环境中的lua版本较低,不支持函数require。
2、具体操作
将参考《Lua:开源库 lua-cjson 安装及使用》生成的json.so拷贝到系统中,可以看到在5.1版本的lua中会去5.1的位置找该so。
GitHub 加速计划 / cj / cJSON
10.45 K
3.16 K
下载
Ultralightweight JSON parser in ANSI C
最近提交(Master分支:2 个月前 )
424ce4ce
This reverts commit 5b502cdbfb21fbe5f6cf9ffbd2b96e4281a741e6.
Related to #860
4 个月前
32497300 - 5 个月前
更多推荐
已为社区贡献4条内容
所有评论(0)