Lua1.0 编译准备

转载出处:http://my.oschina.net/xhan/blog/305943

从官网 www.lua.org/ftp/lua-1.0.tar.gz 下代码。
如何编译,ReadMe 里有这样的说明:

The code compiles and runs in RedHat 5.2 with gcc 2.7.2.3. It may not run in
newer systems, because it assumes that stdin and stdout are constants, though
ANSI C does not promise they are. If make fails, try using the fixed modules
provided in the "fixed" directory. To see the differences (which are really
quite minor), do "make diff".

注意最后一句,也就是把 fixed 目录中的三个文件拷贝到外面覆盖就好了。
fixed 目录中的代码改动如下:
------------------------------
lua.c:
33 行
void main (int argc, char *argv[])
改为
int main (int argc, char *argv[])

52 行
添加 return 0;
------------------------------
iolib.c
20 行
static FILE *in=stdin, *out=stdout;
改为
static FILE *in=NULL, *out=NULL;

395行
添加  in=stdin; out=stdout;

------------------------------
lex_yy.c
20 行
FILE *yyin = {stdin}, *yyout = {stdout};
改为
FILE *yyin = {NULL}, *yyout = {NULL};

为什么这样改,ReadMe 里有说明“It may not run in
newer systems, because it assumes that stdin and stdout are constants, though
ANSI C does not promise they are. ”

这里使用 VS2010 进行分析,建工程,把所有的源文件加入工程,编译,运行。
准备工作完成。
后来试了一下,在 Win7 里用 MinGW,在 Linux 里 gcc 也都可以以编译成功。

原文地址:https://www.cnblogs.com/vd01/p/4931234.html