下面是整理的初步资料,日后输出规范文章。
官网https://luajit.org/status.html
LuaJIT相当于一个非官方的进行过优化的Lua,兼容官方的Lua语法,又加入了JIT(just in time)提升了运行性能。
官方Lua编译生成的字节码不用担心平台兼容性问题(Lua虚拟机解释Lua源码生成机器指令),可以有一定程度的加密(字节码)和一点性能优化(加载更快一点),但是Lua是开源的,稍有技术即可反编译出源码。
使用LuaJIT字节码,加密程度更好,性能优化较多,但是有平台兼容问题,就是因为这个性能优化。
所以使用LuaJIT字节码,需要做好兼容工作:
- 使用lua编译出来的字节码和luajit的字节码不兼容
- 32位和64位的生成的字节码不兼容
- 不同版本的luajit的字节码可能不兼容
很有可能是因为字节码不兼容导致,看上面三种情况。
cannot load incompatible bytecode
cocos windows项目编译的是win32项目,要用32bit LuaJIT
cocos引擎继承了不同机器上的LuaJIT可执行程序,用于生成字节码。
https://www.jianshu.com/p/0f968605d36d
https://baike.baidu.com/item/LuaJIT/3455549?fr=aladdin
https://docs.microsoft.com/en-us/archive/msdn-magazine/2015/february/compilers-what-every-programmer-should-know-about-compiler-optimizations
https://www.zhihu.com/question/37389356
https://www.cntofu.com/book/100/10.md
https://blog.rabit.pw/2017/luajit-decompile/
https://litna.top/2018/07/07/%E6%B5%85%E6%9E%90android%E6%89%8B%E6%B8%B8lua%E8%84%9A%E6%9C%AC%E7%9A%84%E5%8A%A0%E5%AF%86%E4%B8%8E%E8%A7%A3%E5%AF%86/