关于Lua的下载以及wlua、luac等文件的解释
之前学习过一小段时间的Lua,想把Lua集成在自己写的一个小引擎中,但是由于找工作就一直耽误了。现在工作基本稳定后,也需要深入了解一下Lua语言就从官方先下载Lua,结果下载过程很懵逼,下载下来的文件也没ReadMe文件解释都是什么文件,其实这些都是小事,但是至少也收获了一些,所以记录下来。
在Lua官网的下载页面,并没有提供官方的编译好的可执行文件(解释器),好像官方更推荐自己进行编译,然后顺带就提了几个可以下载编译好的程序地址,绕来绕去从LuaBinaries终于下载下来,里面有一个dll文件、lua53.exe、luac53.exe,wlua53.exe其他的啥都没有,其实从命名上也能看出,lua53.exe应该是解释器,lua53c.exe应该是一个编译器,dll文件应该是一个嵌入到程序中使用的动态链接库。但是wlua是啥?这样理解是不是正确的?上官网看了半天文档也没解释下载下来的都是些什么用途,下载页面也只是说Doc中有这些文件的描,然后Doc里也没提到。
最终查阅一些资料,上面提到:
lua52.exe is the console-based interpreter, wlua52.exe is similar to lua52.exe but provides no console output (which means you’ll need to write a GUI to interact with the invisible interpreter); luac5.2.exe compiles a Lua source file into bytecode; bin2c5.1.exe turns Lua bytecode into C (?). Those command-line executables are just clients of the lua*.dll libraries, just like sqlite3.exe is the command-line version of the sqlite.dll
这段话出自Fun with Lua,在LuaBinaries的Manual页面也有如下解释:
Also there are two Lua executables, one that is console based (lua52.exe) and one that is a Windows application with no console output (wlua52.exe). To use wlua interactively you must load a GUI module to create and manage windows and dialogs.
基本的用途和猜测的一直,对于wlua,这不是一个控制台应用,所以必须和GUI模块搭配才能使用,至于dll文件,其实是核心文件,其他几个都要用到。
至于为什么官方不提供二进制程序下载,LuaBinaries也解释道,因为Lua本身体积小,通常被嵌入到其他程序中,所以都是自行编译或者放到程序中一起编译,但是这也会带来一些不便,例如增加初学者的入门难度,如果每个人都自行编译,或者由不同组织维护编译,得到的结果可能出现不兼容性,所以一些工程就出现,例如Lua Binaries,统一编译好的二进制程序。但即使如此,由于Lua本身的特殊性,通常嵌入到其他程序中,所以你会看到很多很多不同的发行版,官方也没有进行统一。
虽然并不是解决了什么大问题,但是也能看到Lua语言的一些特点,还是挺有意思的