Lua2.4 准备工作

为什么要拿出来 Lua2.4 来看一下呢?
 
因为 Lua2.4 的时候增加了一个的外部编译器 luac,可以把 Lua 脚本编译成字节码。解释器可以直接执行编译好的字节码,加载速度得到了提升。这里主要是想看一下编译器是如何保存生成的字节码的,所以简单地把这个版本拿出来看一下。

Lua2.4 的代码的下载地址: www.lua.org/ftp/lua-2.4.tar.gz

代码下载下来后,在 mingw 里 make 了一下,很多错误。好久不写 makefile 了,还是省点事儿,不用 mingw 编译了,直接上 VS2010。开 VS2010,建工程,对于编译器 luac 和解释器 lua 分别建工程,很顺利的编译出 lua 和 luac。因为 Lua 是用 ANSI C 写的,所以在跨平台方面还是没问题的。
编译时又出现了 error C2099: initializer is not a constant 这个错误,修改方式和以前一样,如下:
---------------------------------------------------------
iolib.c 19行
static FILE *in=stdin, *out=stdout;
改为
static FILE *in=NULL, *out=NULL;

iolib_open 中给 in 和 out 赋值:
in=stdin; out=stdout;
---------------------------------------------------------
两个工程所用到的文件分别如下。
luac:src 目录里所有的,include 目录里所有的。
lua : src 目录里(除 luac 目录里的),include 目录里所有的,clients 目录里所有的。
建工程时建空的 win32 命令行程序,可以简单的建个代码目录,把上面说到的目录里的文件都拷贝过来。在工程里添加已存在文件,把代码目录里的所有文件添加就可以了。

在 Linux 里编译了一下,把之前的那个 iolib.c 里的错误修改之后,make 很顺利的过了。
果然,开源的世界里 Linux 才是标准平台。这也就是为什么你发现很多开源的软件在 Windowns 里没有或者不好用的原因,因为那软件一开始就是在 Linux 里开发出来的,只是后来发现用的人多了,才被移植到 Windows 里的,所以才有了各种不愉快。当然,这就是另一个问题了,这里就不讨论这个问题了。

你可能感兴趣的:(lua,Lua2.4)