Lua是一门神奇的脚本语言,游戏宅必备,懒人必备。Lua差多不是学起来用起来最简单的语言了,以至于简单到自身就是文档,自身就是配置文件。但是Lua的运行效率却是众多脚本中非常高的,据说仅次于V8爹下的js。主要原因是它是主要和c/c++打交道嵌入式脚本,c++的逻辑写的着实蛋疼的时候可以考虑下这门脚本语言。

Lua有直接的windows安装包的,还内置了一个编辑器很不错。但是为了更深层次的理解Lua,本文主要介绍下如何利用Lua源码来自己编译解释器。

首先我们去下载一下Lua的本体...

百度输入:Lua官网
戳第一个进去。找到唯一认识的单词Download。
戳进去在SourceCode文件夹下抓一个lua-5.x.x.tar.gz下载。
乍一看这好像是Linux系统下的压缩文件,不过我们有万能的winrar,管他能不能用先解压再说。
解压后获得Lua的资源文件夹。先进入doc文件夹把一个叫logo的图片文件收藏,然后心中默念 Lua大法好。

进入src文件夹,这200多k的c代码就是Lua的本体了,没错就这么点。依靠这些本体我们可以在windows环境下做出三样东西:
一个Lua的静态库 .lib
一个Lua的解释器 Lua.exe
一个Lua的编译器 Luac.exe

静态库一般还需要搭配几个这个src中的头文件使用,可以瞬间嵌入到c/c++程序中让脚本成为程序的一部分(毕竟大家都是c嘛)。通过解释器可以直接执行脚本,这个用过python的一定都非常熟悉,随便写一个xx.py 然后在终端输入 python xx.py就可以执行Python脚本,Lua解释器同理,编译好后配置环境变量,然后就可以在终端执行Lua xx.lua来快捷执行Lua脚本文件。但是这么做毕竟是一边解释一边执行,所以Lua还提供了Luac编译器,可以直接将Lua脚本编译成二进制可执行文件,好了这大概就是这三个工具的主要作用了。自己动手丰衣足食,虽然Lua也有Python那样的傻瓜安装包,但是自己编译出来的才是亲儿子不是嘛哈哈,接下来我们就来编译这三个。

先说下我的环境:

操作系统 : Windows 7
工具 : VisualStudio 2013 / Lua源代码

1.静态库:打开VisualStudio,新建一个win32空项目,名字为Lua53,项目类型为静态库。取消勾选预编译头。在源文件中添加src文件夹下的所有文件,然后移除lua.c 和 luac.c这两个文件,右键项目->生成。

然后跟踪到项目的文件夹。这个时候在Debug目录下应该就有我们编译好的Lua53.lib库了。

2.解释器:新建一个win32空项目,项目类型为控制台应用程序,名字为Lua,取消预编译头,在源文件中添加src文件夹下的lua.c。
右键项目生成。肯定会失败的,不过不要紧,目的是生成Debug文件夹,进入项目的Debug文件夹,在其中创建两个文件夹,一个名叫win7,另一个叫lua53
把win7项目所需要的所有静态库装到win7文件夹里边,一般win7库文件的坐标是C:\Program Files\Microsoft SDKs\Windows\v7.1A\Lib 把里边的.lib全拷过来
lua53文件夹中,装入刚才编译好的静态库Lua53.lib
右键项目->属性->链接器->常规->附加库目录,添加两个项目所需要的静态库路径,就是刚才我们创建的两个位于Debug文件夹下的路径。
右键项目->属性->链接器->输入->附加依赖项,添加一项 Lua53.lib

大功告成后右键项目生成,不出意外Debug文件夹下就会有一个Lua.exe可执行文件了。
将这个Debug文件夹的路径添加到系统变量的Path当中,启动powershell 输入 Lua 应该就可以进入Lua环境了。同时也可以写一个xx.lua 然后执行Lua xx.lua来执行这个脚本。

3.编译器:步骤和上边完全一样,可以勾选预编译头。源文件中添加的是src文件夹下的luac.c。在Windows要这个编译器没什么卵用,因为编译的是.out的二进制可执行文件QAQ。

注:上述的Debug目录就可以当成一个最终产品移植到别的windows机器上,因为静态库都已经傻瓜似的自带了,其实用不了那么多的.lib懒得挑了因为这都不是重点。但即便如此如果对方没有安装vs2013依旧执行不了,因为还缺少一个动态库MSVCR120.dll(我能怎么办我也很绝望啊)。 这需要机器安装Microsoft Visual C++ 2013 Redistributable Package。因为我们的都是win32项目,对应安装32位版本就好。

https://github.com/RockDeria/LuaFile.git

再注:关于Lua语法方面的学习,书籍的话当然推荐经典的《Lua程序设计》(黄皮肤红眼睛),网上的话菜鸟教程也很不错。

从零开始的Lua宅[1]:编译Lua解释器的更多相关文章

  1. 用VC编译lua源码,生成lua语言的解释器和编译器

    用VC编译lua源码,生成lua语言的解释器和编译器 1.去网址下载源码 http://www.lua.org/download.html 2.装一个VC++,我用的是VC6.0 3.接下来我们开始编 ...

  2. windows下编译lua源码

    所有的lua源码都放在了 src 文件夹下,当然,不同的lua版本目录结构有可能不一样,但是都会有 src 这个文件夹,只有这个才是我们编译必须的.而且lua越做越精简了,5.1的版本里面还有一些te ...

  3. <转>windows下编译lua源码

    因为之前一直使用 lua for windows 来搭建lua的使用环境,但是最新的 lua for windows 还没有lua5.2,我又想用这个版本的lua,所以被逼无奈只能自己编一下lua源码 ...

  4. 编译lua

    http://www.lua.org/ 新建一个 static library 工程,把解压得到的目录下的src子目录中的所有.h和.c文件拷贝到新工程目录下. 工程中删除自动生成的 main.c 文 ...

  5. 在Windows和MacOS下编译Lua

    官方说明: http://www.lua.org/manual/5.3/readme.html 在Windows下编译Lua动态链接库的注意事项: 1. 创建一个空的DLL项目: 2. 将src文件夹 ...

  6. Lua源码编译之CL编译器编译

    通过使用VC下的CL编译器,可方便地编译Lua源码,而无需构造工程并设置各种选项: 以下以源码Lua5.3.1版本为例,将通过CL编译选项直接编译源码,为方便编译将采用批处理脚本,脚本放置在Lua解压 ...

  7. Sublime Text(2/3)编译lua

    想在subLime text 3中集成编译Lua(或其他语言)功能,只需要在Tool->Build System -> New Build System中将原来的 { "shel ...

  8. [lua]安卓ndk如何编译lua库

    这里说的lua库是标准lua库,不包含tolua,不包含cocos2dx的各种lua扩展,是干净的lua. 参考: http://stackoverflow.com/questions/1229965 ...

  9. Lua 5.2 编译 For Windows

    body { font-family: 微软雅黑; font-size: 11pt; line-height: 1.5; } html, body { color: #000000; backgrou ...

随机推荐

  1. Openstack web 添加和删除按钮

    注:当前已经时候用smaba将openstack环境的源码共享到windows系统上,并使用pycharm进行代码编辑和修改(参见openstack开发环境搭建).如下图:

  2. Hibernate错误:javax/persistence/EntityListeners

    1. 原文地址:http://heavengate.blog.163.com/blog/static/20238105320127291018026/ 错误信息: hibernate:javax/pe ...

  3. oracle处理重复数据

    oracle查找重复记录 SELECT *FROM t_info aWHERE ((SELECT COUNT(*)          FROM t_info          WHERE Title ...

  4. SO_REUSEADDR的分析

    今天协议个socket程序时碰到了这个问题,选自博客http://www.cppblog.com/ace/archive/2006/04/29/6446.html 敲完代码,等下看它.

  5. WebView根据加载的内容来控制其高度

    一.先设置WebView的高度为0,然后在其加载结束后的代理方法中根据contentSize设置其高度 //初始话一个UIWebView: self.webView = [[[UIWebView al ...

  6. windows和Dos常见命令总结

    linux最常见命令 (1) pwd命令pwd (即print working directory,打印工作路径) 命令的功能是显示当前的工作路径.如现在是在“/home/CAI”目录下,则可以用此命 ...

  7. Linux上安装Apache服务器

    http://httpd.apache.org/download.cgi httpd-2.4.29.tar.gz #创建httpd用户 groupadd httpd useradd -g httpd ...

  8. [Xcode 实际操作]六、媒体与动画-(5)使用CoreImage框架给图片添加马赛克效果

    目录:[Swift]Xcode实际操作 本文将演示如何使用CoreImage图像处理框架,给图片添加像素化的滤镜效果. 在项目导航区,打开视图控制器的代码文件[ViewController.swift ...

  9. Oracle共享服务器的连接模式

    一般Oracle数据库安装默认都是选择专用服务器模式的连接方式,但实际上Oracle也支持共享服务器的连接模式,不过这种在实际生产中见到的很少,我个人只在一些医院行业的客户生产环境中见到过这类配置. ...

  10. JPA @MappedSuperclass注解的使用说明(转)

    (2011-11-07 11:37:30) 转载▼ http://blog.sina.com.cn/s/blog_7085382f0100uk4p.html 标签: 杂谈   基于代码复用和模型分离的 ...