目录
1、编译工具和环境说明
2、基础编译tolua
3、以pbc为例子,添加第三方库
4、更新luaJit
大家好,我是阿赵。
之前有朋友问我编译tolua相关的问题。虽然网上也有很多相关的资料可以查询,但我感觉自己也写一篇,作为一个记录也不错。不过一篇文章要把所有内容都说完,可能有点长,所以把整个过程分开几篇文章写一下。这一篇主要是讲个概述,说一下编译需要的工具和环境,源码的下载,还有文件夹的说明。
一、什么是tolua
其实能看这篇文章的人,估计都知道tolua是什么。不过我也啰嗦的说一下。
首先,lua是一种轻量化的脚本语言,不需要编译就能运行,很适合作为游戏热更新使用。
然后,tolua简单来说,就是可以实现在c#调用lua脚本的一个库。
使用Unity引擎开发游戏,可以通过tolua,加载和运行lua脚本。然后lua脚本作为一种文本资源,可以通过热更新的形式修改代码。
二、为什么需要编译tolua
由于tolua源码是c语言,然后我们想在不同的平台下使用这个tolua,比如
1、PC
2、OSX
3、安卓
4、iOS
5、等
如果只是想用tolua的基础功能,那么下载别人已经编译好的库来用也是可以的。
不过很多时候我们是想添加自己的功能给tolua使用,比如添加一些第三方库,添加一些自己写的方法,或者更新某些库之类。
在这些情况下,就需要自己对tolua重新编译。
三、编译工具
首先明确一点,不同平台的编译,需要不同的工具。
1、PC、安卓
PC和安卓的库可以在Windows系统下面编译,使用的工具是mingw,可以去官网下载
下载地址
需要注意的是,运行的批处理有区分32位和64位。
因为不管是pc还是安卓,编译的时候都区分32位和64位的,所以使用mingw编译的时候也需要注意,要用对应位数的批处理程序来执行。
2、OSX、iOS
OSX和iOS平台的编译,就需要一台苹果的MAC电脑了。这是因为,实际上的编译过程是需要Xcode来编译的,所以在Windows应该是做不到的。
所以,准备一台MAC电脑,然后下载好Xcode就行了。
四、tolua源码下载
这里有2个选择
1、下载官方tolua最新版
下载地址
这个官方版本其实也已经很久没有人在维护了
2、下载别人配置好的V2版本
下载地址
这个版本最后一次维护也是几年前了。
这两个版本的区别在于,官方版本是一个比较纯净的版本,不带第三方库,而V2版本,是已经添加了一些第三方库的,比如sqlite、pbc、sproto。
为了能更单纯的说明问题,所以下面我会以官方的纯净版本作为说明。
五、文件夹说明
下载完之后,把里面的内容解压出来。我建议是在某个盘符下建一个tolua文件夹,然后把东西拷贝进去。因为在编译的时候,我们要用命令行工具跳转到这个文件夹,所以不建议放在很复杂结构的文件夹里面去。
第一次看到这个文件夹,估计很多人都会有点蒙,不知道这堆东西是干什么用的,包括我自己也是这样。
其实划分一下,可以分为这些类别:
1、对应平台设置文件夹
这些文件夹包括:
1.android
2.iOS
3.macjit
4.macnojit
5.ubuntu
6.window
这些文件夹,都是发布对应平台的时候需要用到的,其中
1.android文件夹,是存放编译安卓平台时对应的打包列表Android.mk文件的
2.iOS、macjit、macnojit这三个是编译iOS和OSX时的xcode工程的文件夹
3.ubuntu、window是发布这两个平台时用来编译.a文件的中间存放文件夹。
2、编译完成的输出文件
这里指的是Plugins文件夹
这里面存放的是各个平台编译出来,最终使用的库文件,比如Windows平台的dll文件,安卓平台的so文件,iOS平台的.a文件等。
3、第三方库文件夹
这个官方的tolua_runtime-master里面有:
1.cjson
2.luajit-2.1
3.luasocket
这些都是需要编译的c语言源码
如果我们需要添加其他第三方库,或者添加自己写的代码,也是通过这种形式去存放。其实放在哪个文件夹,问题都不是很大,因为pc和安卓平台的输入是需要指定路径的,苹果的xcode编译,也是需要在项目里面配置包含库的。
4、编译批处理文件
后缀为sh的文件,这里包括了
这些文件,其实就是各种平台编译时的批处理文件。
打开其中一个文件看看,比如build_win64.sh:
#!/bin/bash
# 64 Bit Version
mkdir -p window/x86_64
cd luajit-2.1
mingw32-make clean
mingw32-make BUILDMODE=static CC="gcc -m64 -O2" XCFLAGS=-DLUAJIT_ENABLE_GC64
cp src/libluajit.a ../window/x86_64/libluajit.a
mingw32-make clean
cd ..
gcc -m64 -O2 -std=gnu99 -shared \
tolua.c \
int64.c \
uint64.c \
pb.c \
lpeg.c \
struct.c \
cjson/strbuf.c \
cjson/lua_cjson.c \
cjson/fpconv.c \
luasocket/auxiliar.c \
luasocket/buffer.c \
luasocket/except.c \
luasocket/inet.c \
luasocket/io.c \
luasocket/luasocket.c \
luasocket/mime.c \
luasocket/options.c \
luasocket/select.c \
luasocket/tcp.c \
luasocket/timeout.c \
luasocket/udp.c \
luasocket/wsocket.c \
-o Plugins/x86_64/tolua.dll \
-I./ \
-Iluajit-2.1/src \
-Iluasocket \
-lws2_32 \
-Wl,--whole-archive window/x86_64/libluajit.a -Wl,--no-whole-archive -static-libgcc -static-libstdc++
可以看到,里面都是一些编译的命令
还有一个link_arm64.bat文件,是编译安卓64位时使用的批处理。
5、其他源码文件
看到一些散放的.h或者.c文件,这些都是编译时需要的源码,其实我觉得可以建一个文件夹专门存放的,毕竟编译是需要的文件,都是有地方可以指定路径的。文章来源:https://www.toymoban.com/news/detail-476567.html
六、大概的打包流程
到这里,我们大概能得出一个概念,我们编译这个东西的流程是:
1、准备好工具和源码
2、把需要添加的代码放进去项目
3、去对应的平台的文件夹或者批处理文件添加需要编译的文件
4、运行工具,编译
5、去Plugins的对应文件夹拿到编译好的文件,使用。
过程是这么简单,但实际操作起来总会出现各种问题,一篇文章内容太多也不合适,下一篇文章将会实际编译一下看看。文章来源地址https://www.toymoban.com/news/detail-476567.html
到了这里,关于编译tolua——1、编译工具和环境说明的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!