Lua编译
来源:互联网 发布:优化组织管理模式 编辑:程序博客网 时间:2024/05/16 16:15
首先从 lua的官网 下载你想要使用的lua源码,比如我下载的就是lua5.2。解压后内容如下:
所有的lua源码都放在了 src 文件夹下,当然,不同的lua版本目录结构有可能不一样,但是都会有 src 这个文件夹,只有这个才是我们编译必须的。而且lua越做越精简了,5.1的版本里面还有一些test的例子之类的,5.2就只剩下必须的内容了。
然后,如果是第一次编译lua,还是建议看一下doc文件夹下面的 readme.html。我就是通过那个才知道编译lua必备的文件的。
通过readme,我们知道了编译lua其实包含3部分内容:编译lua的库文件,编译lua解释器,编译lua编译器。
因为我的电脑上安了vc的编译器cl,所以这3个部分可以用一个批处理文件搞定,下面我们就来写这个批处理,说到底就是3条编译命令罢了。
在readme里面已经提到了这3个部分需要的内容,如下图:
在上面那个文件夹下建一个新的bat文件,如下:
然后开始写这个bat,先来生成lua的库文件:
- cd src
- cl /O2 /W3 /c /DLUA_BUILD_AS_DLL l*.c
- del lua.obj luac.obj
- link /DLL /out:lua52.dll l*.obj
- cd ..
这样就可以在src目录下生成lua52.dll了。注意到我去掉了lua.obj和luac.obj,因为根据readme这两个文件不是必须的。
然后再生成一个解释器,接着在上面的代码里面加2行:
- cd src
- cl /O2 /W3 /c /DLUA_BUILD_AS_DLL l*.c
- del lua.obj luac.obj
- link /DLL /out:lua52.dll l*.obj
- cl /O2 /W3 /c /DLUA_BUILD_AS_DLL lua.c
- link /out:lua.exe lua.obj lua52.lib
- cd ..
其实就是重新编译lua.c,然后链接生成的lua52.lib就OK了。
最后生成编译器,继续加2行,并添加编译luac.c:
- cd src
- cl /O2 /W3 /c /DLUA_BUILD_AS_DLL l*.c
- del lua.obj luac.obj
- link /DLL /out:lua52.dll l*.obj
- cl /O2 /W3 /c /DLUA_BUILD_AS_DLL lua.c luac.c
- link /out:lua.exe lua.obj lua52.lib
- del lua.obj
- link /out:luac.exe l*.obj
- cd ..
这样,运行这个批处理就可以在src目录下生成所需的lua库lua52.dll以及解释器lua.exe和编译器luac.exe了。
当然,如果你双击这个批处理,黑框一闪而过,然后发现src下什么都没有生成,那是因为你的vc编译器cl没有被你放入windows系统环境中,这样的话你就只能通过vs或者是vc的命令处理器来运行这个批处理了或者把你的vs安装目录放到系统环境中去,比如在我的电脑上是这个路径:D:\Program Files\Visual Studio 2005\VC\bin。别问我怎么放到系统环境中去,百度吧少年。
好人做到底,贴出用vs命令处理器编译需要干的事情:
然后进入到mylua.bat的目录,接着直接运行这个批处理就OK了。简单吧。
因为打开了3级警告开关,所以有很多警告,可以去不理睬。结果如下:
最后上传这个bat文件。
整个编译过程都OK,提两点:
一个是在cl编译的时候加入了一个自定义的宏 /DLUA_BUILD_AS_DLL 这是因为在luaconf.h文件中定义了LUA_BUILD_AS_DLL宏,它控制了__declspec(dllexport)和__declspec(dllimport)的定义,必须加上这个开关才有这两个定义,否则编译出来的DLL没有任何导出函数。
另一个是在最后生成编译器的时候,会发现我重新链接了所有的obj,而不是像生成解释器的时候一样,直接链接Lua52.lib。这是因为我这么做的时候发生了报错,提示有部分函数找不到。暂时没有明白是什么原因,有人说是bug,暂且不去管他。
免费下载地址在 http://linux.linuxidc.com/
用户名与密码都是www.linuxidc.com
具体下载目录在 /2014年资料/2月/11日/Windows下编译Lua源码
下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm
--------------------------------------------------------分割线--------------------------------------------------------
Lua 的详细介绍:请点这里
Lua 的下载地址:请点这里
- 【lua】-- lua编译
- LUA编译
- lua编译
- Lua 编译
- Lua编译
- lua编译
- 编译Lua
- Lua 编译
- lua 编译
- 编译 lua
- lua 编译
- lua编译
- bcb编译lua
- 使用MinGW编译Lua
- windows+mingw+lua 编译
- VS2005编译LUA
- lua编译问题总结
- Sublime Text2 编译 lua
- 嵌入式系统开发步骤
- VMware虚拟机配置文件(.vmx)损坏修复
- 正确使用 Volatile 变量
- 嵌入式系统开发之环境的建立
- 1411012250-ny-孪生素数问题
- Lua编译
- C语言画空心菱形
- 黑马程序员——异常机制5:练习
- 【发送邮件按钮】尝试一下源码编辑
- 为何Android开发中不推荐使用全局变量传参
- 随笔
- 分类 and 扩展
- ES系统封装教程 高级进阶版 提供Wind7,xp系统下载 (by 星空武哥)
- 改变UIAlertView背景