0. 前言
有段时间没有写博客了,主要原因是事情有点多,一件接着一件,没有太多整理总结的机会。游戏开发逐渐进入铺量制作的忙碌阶段,趣味性没那么多,新鲜感也少了,虽然还是有很多可供记录的点,但大多比较琐碎,难成系统,又或者可能暂时没有结果,不便于分享。
这几天花了一些时间在Lua层的内存检查和性能优化与检查方面,对比并尝试集成了一些方案,也踩了一些坑,整理记录在这里,给需要的同学提供参考。
1. ToLua#的编译
之前的博客有提到过,我们使用的是ToLua#作为Unity引擎和Lua之间的桥接工具,本文记录的集成工具都是在C层进行的,因此要编译自己的ToLua#。
ToLua#的源码地址是:https://github.com/topameng/tolua_runtime,编译流程可以参考其wiki文档,不过这部分的过程记录的不太详细,本部分基于wiki文档和自己在Windows以及Mac OS上的编译过程进行一些整理,记录整个过程和遇到的问题如下:
安装msys2-x86_64-20161025.exe工具,Web地址:http://msys2.github.io/。
为msys2安装gcc,由于原始的下载地址我本地下载非常慢而且出错,建议添加国内的镜像地址:
编辑 /etc/pacman.d/mirrorlist.mingw32 ,在文件开头添加:Server = http://mirrors.ustc.edu.cn/msys2/REPOS/MINGW/i686
编辑 /etc/pacman.d/mirrorlist.mingw64 ,在文件开头添加:
Server = http://mirrors.ustc.edu.cn/msys2/REPOS/MINGW/x86_64
编辑 /etc/pacman.d/mirrorlist.msys ,在文件开头添加:
Server = http://mirrors.ustc.edu.cn/msys2/REPOS/MSYS2/$arch
然后执行 pacman -Sy 刷新软件包数据即可。
打开mingw的控制台,输入如下命令进行gcc相关工具的安装:
pacman -S mingw-w64-i686-gcc
pacman -S mingw-w64-x86_64-gcc
pacman -S mingw-w64-i686-make
pacman -S mingw-w64-x86_64-make
pacman -S make
安装完毕之后,执行tolua_runtime下的对应sh文件进行编译。
编译Android版本需要安装Android SDK,下载Android NDK r10e,并配置Android NDK r10e的目录到PATH环境变量中,配置ANDROID_NDK_PATH环境变量。需要注意几个配置:
sh文件里的NDKABI变量,定义了NDK的版本,在msys64\etc\profiles里设置环境变量。
如果你使用的MinGW-w64 Win64 Shell来编译32位版本的时候会报找不到dll的错误:
F:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/6.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible
F:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/6.2.0/../../../../x86_64-w64-mingw32/lib/libm.a when searching for -lm
F:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/6.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible
F:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/6.2.0/../../../../x86_64-w64-mingw32/lib\libm.a when searching for -lm
F:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/6.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible
F:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32