http://blog.csdn.net/zjg555543/article/details/11814563

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

首先从 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的库文件:

  1. cd src

  2. cl /O2 /W3 /c /DLUA_BUILD_AS_DLL l*.c

  3. del lua.obj luac.obj

  4. link /DLL /out:lua52.dll l*.obj

  5. cd ..

这样就可以在src目录下生成lua52.dll了。注意到我去掉了lua.obj和luac.obj,因为根据readme这两个文件不是必须的。

然后再生成一个解释器,接着在上面的代码里面加2行:

  1. cd src

  2. cl /O2 /W3 /c /DLUA_BUILD_AS_DLL l*.c

  3. del lua.obj luac.obj

  4. link /DLL /out:lua52.dll l*.obj

  5. cl /O2 /W3 /c /DLUA_BUILD_AS_DLL lua.c

  6. link /out:lua.exe lua.obj lua52.lib

  7. cd ..

其实就是重新编译lua.c,然后链接生成的lua52.lib就OK了。

最后生成编译器,继续加2行,并添加编译luac.c:

  1. cd src

  2. cl /O2 /W3 /c /DLUA_BUILD_AS_DLL l*.c

  3. del lua.obj luac.obj

  4. link /DLL /out:lua52.dll l*.obj

  5. cl /O2 /W3 /c /DLUA_BUILD_AS_DLL lua.c luac.c

  6. link /out:lua.exe lua.obj lua52.lib

  7. del lua.obj

  8. link /out:luac.exe l*.obj

  9. 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,暂且不去管他。

转载于:https://blog.51cto.com/sunzeduo/1306162

windows下编译lua源码相关推荐

  1. WINDOWS 下编译 ffmpeg 源码总结

    WINDOWS 下编译 ffmpeg 源码,有两种方式:VC.GCC 1.VC 编译:   https://github.com/ShiftMediaProject/FFVS-Project-Gene ...

  2. windows下编译pcl-master源码(带GPU)

    参考博客 1.http://pointclouds.org/documentation/tutorials/compiling_pcl_windows.php#compiling-pcl-window ...

  3. Windows IEDA 编译Hbase源码报错 - 无法执行shell脚本

    windows 下编译 hbase源码,报错 [ERROR] Command execution failed. java.io.IOException: Cannot run program &qu ...

  4. Win7下编译mosquitto源码

    在windows下编译mosquitto源码使用的工具包括: 1.visual studio 2010(用vs .net 2003的编译器时cmake会提示未识别的c或c++编译器) 2.cmake ...

  5. 从零开始,手把手教你如何在Ubuntu下编译VLC-Android源码

    前言 公司项目中使用的libvlcjni.so库文件,有点老,对Android 6.0+系统兼容性太差了,当程序运行在Android6.0+系统上时,回弹出警告框,提示libvlcjni.so:tex ...

  6. win7下编译python源码

    win7下编译python源码 下载源码: 打开网页:https://www.python.org/downloads/release/python-2710/ 下载完成后解压即可 查看文档: 其实最 ...

  7. 在CentOS下编译VLC源码

    在CentOS下编译VLC源码 一.下载VLC源码 二.VLC编译与安装 1.编译与安装 2.库文件 3.头文件 三.报错解决 1.configure: error: Could not find l ...

  8. mac下编译安卓源码

    资源 Mac OS10.12 编译Android源码8.1 aosp编译-需翻墙 Mac下编译安卓源码 手把手教你在Mac OS下载.编译及导入Android源码 步骤 准备 磁盘空间大于180G 安 ...

  9. c++ 编译添加dll_VS2019编译lua源码

    编译环境 Windows10 Microsoft Visual Studio 2019 准备工作 下载 lua 源码压缩包并解压, 其中 src 就是 lua 的源代码目录 官方下载地址 http:/ ...

最新文章

  1. NB-Iot烟感01:烟感探测器原理和规格
  2. 通过Visual Studio 2005的项目模板来加速开发过程
  3. 统计机器学习第二章 感知机
  4. 不装客户端连接mysql_C#不安装oracle客户端,如何连接到oracle数据库
  5. python islice_python文件操作细节
  6. css3实现科技感的呼吸灯效果
  7. 如何使用 .NET Core 安全地加/解密文件
  8. jitter单位_产生jitter的原因
  9. 数组-去重、排序方法、json排序
  10. 系统工程师Python工程师基础班
  11. java writer 乱码_Java servlet 使用 PrintWriter 时的编码与乱码
  12. 电磁场计算的服务器性能指标,有限公式电磁场数值计算理论与性能
  13. FMI飞马网|如何尽早的接触人工智能才不会被抢饭碗,2030年会怎么样?
  14. 计算机应用能力考试ppt2003,全国专业技术人员计算机应用能力考试_PPT_2003_题库版...
  15. Java OOP 7 JAVA 集合框架
  16. 内存泄漏问题该如何解决-面试学习笔记
  17. 音视频基础(四)音频文件格式转换(支持重采样采样位数为24位)
  18. 【http】微信网站使用的是http80端口或者https443端口访问
  19. matlab中牛顿下山法实例,非线性方程的数值解法牛顿下山法matlab
  20. css选择器 ~ (波浪号)、+(加号)、>(大于号)的用法解析和举例

热门文章

  1. MSChart使用导航之开发
  2. [转]几句不可不看的经典人生语句
  3. python打开excel的函数-Python读取excel文件中带公式的值的实现
  4. Windows PE导出表编程4(重构导出表实现私有函数导出)
  5. UVA10382喷水装置
  6. 【五线谱】变音记号 ( 升号 # | 降号 b | 重升号 x | 重降号 bb )
  7. 【Java 虚拟机原理】Class 字节码二进制文件分析 七 ( 局部变量表分析 )
  8. 【Java 注解】注解简介及作用
  9. 【数字信号处理】数字信号处理简介 ( 抽样定理 | 多抽样率 )
  10. 【Kotlin】Kotlin 领域特定语言 DSL 原理 一 ( DSL 简介 | 函数 / 属性扩展 )