skynet早期版本有lua-cjson库,后来使用sproto取代了cjson,也直接将代码移除,但游戏中还是有json的需求。
lua5.3开始支持整形,但cjson并没有适配lua5.3, 如果直接编译使用会造成将json串中的数字转为浮点数。
所幸云风为cjson出一个补丁:https://github.com/mpx/lua-cjson/pull/22
当然如果感觉麻烦,还可以直接使用云风维护的一个分支:https://github.com/cloudwu/lua-cjson
这里以skynet中使用cjson为例,当前skynet中使用的是lua5.3.5,我们已经在ubuntu上安装了lua5.3.5,如果没有安装,则看我这篇教程:
ubuntu上安装Lua(源码安装方式,可指定版本)
下载这个cjson
git clone https://github.com/cloudwu/lua-cjsonCloning
你会看到有个lua-cjson目录,进入该目录:
输入命令:make
看到这里没有报错,再输入ls命令,就会看到:
如果有报错,告诉大家一个排查错误的方法:
看Makefile文件:
看这个路径就知道,你检查一下你的路径里是否有这些,比如版本5.3,后面的lua目录是拼接起来的,你如果安装的是lua5.3.x的话,这里应该不会报错,否则就先检查这些这些目录里是否存在lua的相关文件,没有的话,就先按照我的教程安装一遍lua5.3.5,或者直接用apt-get安装lua5.3.x
将生成的cjson.so复制到luaclib文件夹,或者你自己定义的文件夹,让skynet可以找到它。