arm环境打包lua脚本依赖的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版本会报错

lua下载地址

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。

参考:
undefined symbol: lua_rotate
Lua:开源库 lua-cjson 安装及使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值