lua、luac和luaJit

lua:

lua其实就是为了嵌入其它应用程序而开发的一个脚本语言,

lua优势

1)lua是一个免费、小巧、简单、强大、高效、轻量级的嵌入式的脚本语言,lua当前的发行版本5.3.1只有276k。

2)它是用C语言开发的项目,所以可以在大部分的操作系统上运行

3)lua是目前速度最快的脚本语言,既可以提升语言的灵活性还可以最大限度的保留速度

4)其语法非常简单,没有特例

5)lua还可以作为C的API来使用

luac和luajit是干什么的?

luac和luajit都是lua语言的运行时编译器

他们是将lua源码文件,生成为二进制01编码的程序,这样做的好处是1:安全,2:机器识别速度快。原来读lua文件要经过一遍语义分析等,现在省掉了中间几个步骤。

luac是lua官方自带的,luajit是第三方的,从我们测试效率上来说,luajit更快,lua最慢。

luac:

接入luac时最好是下载源码编译,因为如果是现成的.a文件,首先安全先不说,兼容就可能有问题,毕竟那是在别人的机器上编译好的文件。另外注意点是makefile里默认的编译环境是linux,如果是在mac上编译,一定要改makefile(注意看makefile里的注释,都写清楚了),否则编译出来的二进制文件是无法被lua解释器识别的。在cocos2d的解释器里,代码是不用修改的,因为lua官方都支持好了。编译完成之后,生成了一个luac的命令(windows下是luac.exe),这个命令可以将lua文件转换为二进制文件。(命令怎么敲,自行搜索解决吧)将这个文件替代原来的lua文件,没报错,就表示成功了。

luaJit:

LuaJIT已经在多个领域广泛应用,特别是在游戏领域,更是在很多地方替代了以前的lua源码或者luac字节码。不仅LuaJIT在一定程度上带来了效率的提高,而且对于逆向工程师来说,其逆向难度也大大增加,暂时还没办法将其转化为可读性强的lua源码。

同样建议自己编译,同样要修改makefile文件,mac下用xcode编译还有修改pagezero参数等等bug,(遇到的话自行网上搜索吧),同样会生成一个luajit文件,执行这个命令可以将lua转换为二进制,但是这里要多一步,就是cocos2d里的头文件和二进制文件,要替换为luajit官方的头文件和二进制。

接入的时候注意版本对应,lua和luajit都可以查看当前版本,cocos2d里的lua头文件里也有宏记录了lua版本,一定要对应好。

我的项目最终选择了luac,为什么,因为luajit不支持ios的64位,而苹果要求必须支持。而且luajit官方好久都没更新了

不过luac有一些反编译的工具,所以最后还要再进行一次加密才比较保险。luajit的反编译目前还没看到。