编译tolua——1、编译工具和环境说明

目录
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文件,这些都是编译时需要的源码,其实我觉得可以建一个文件夹专门存放的,毕竟编译是需要的文件,都是有地方可以指定路径的。

六、大概的打包流程

到这里,我们大概能得出一个概念,我们编译这个东西的流程是:
1、准备好工具和源码
2、把需要添加的代码放进去项目
3、去对应的平台的文件夹或者批处理文件添加需要编译的文件
4、运行工具,编译
5、去Plugins的对应文件夹拿到编译好的文件,使用。
过程是这么简单,但实际操作起来总会出现各种问题,一篇文章内容太多也不合适,下一篇文章将会实际编译一下看看。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: tolua是一种用于将C/C++代码绑定到Lua脚本语言工具。tolua 1.0.93是tolua工具的一个特定版本,并且是已经经过编译的版本。通过编译好的tolua 1.0.93,我们可以方便地在Lua中使用C/C++代码,实现更高级的功能或者优化性能。 在使用编译好的tolua 1.0.93时,我们首先需要将tolua的头文件和库文件正确地链接到我们的项目中。然后,我们可以使用tolua的API来定义Lua脚本中可以访问的C/C++函数,并将它们绑定在一起。通过这种方式,我们可以在Lua脚本中调用这些C/C++函数,实现复杂的功能。 tolua 1.0.93编译好的版本带来了一些改进和优化,可能修复了之前版本中的一些bug,提高了性能和稳定性。这使得我们能够更好地利用Lua和C/C++的优势,使二者结合更加方便和高效。 总之,tolua 1.0.93 编译好的版本是一种方便的工具,通过它我们可以将C/C++代码与Lua脚本相结合,从而实现更高级和更复杂的功能。 ### 回答2: "tolua 1.0.93编译好的"是指tolua的一个特定版本,它已经经过编译,可以直接在相应的平台上使用。 tolua是一个开源项目,它允许开发者用C/C++来编写Lua的扩展模块。Lua是一种脚本语言,可嵌入其他应用程序中使用,tolua则为嵌入到C/C++应用程序中的Lua提供了一个简单的扩展方法。 通过编译好的tolua 1.0.93版本,开发者可以在他们的应用程序中直接使用Lua语言以及通过C/C++编写的扩展模块。这样可以在不用对Lua进行大量的C语言绑定操作的前提下,实现对应用程序的灵活扩展。 编译好的版本意味着它已经经过编译器的处理,可以直接在相应的平台上运行,无需再进行编译步骤。这为开发者提供了更为方便的使用方式,可以节省时间和精力。 总之,tolua 1.0.93编译好的版本是一个可以直接在应用程序中使用的已编译版本,它提供了一种简单的方法将Lua与C/C++结合,以实现应用程序的扩展功能。 ### 回答3: tolua 1.0.93 是一个已经编译好的开源工具,用于将C/C++代码转换为Lua脚本。它是一个由多个C语言文件组成,并且已经被编译为可执行文件供用户直接使用。 使用这个编译好的版本,用户可以方便地将已有的C/C++代码整合到Lua环境中,并且可以使用Lua的一些特性和库对代码进行扩展和增强。tolua 1.0.93提供了一组API,让用户可以在Lua环境中调用C/C++代码,并且可以实现C/C++与Lua的双向数据传递。 使用tolua 1.0.93编译好的版本,用户可以享受到编译程序带来的便利,无需进行源代码的编译和配置,只需要将已经编译好的工具集成到项目中即可。同时,这个版本也同时提供了相应的文档和示例,方便用户快速上手和了解如何使用。 总之,tolua 1.0.93 编译好的版本为用户提供了一种快速将C/C++代码与Lua脚本结合的方法,使得开发者可以更加灵活和高效地利用Lua的特性和C/C++强大的计算能力,从而更加方便地开发出功能丰富的应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值