windows下编译lua源码
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的库文件:
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,暂且不去管他。
转载于:https://blog.51cto.com/sunzeduo/1306162
windows下编译lua源码相关推荐
- WINDOWS 下编译 ffmpeg 源码总结
WINDOWS 下编译 ffmpeg 源码,有两种方式:VC.GCC 1.VC 编译: https://github.com/ShiftMediaProject/FFVS-Project-Gene ...
- windows下编译pcl-master源码(带GPU)
参考博客 1.http://pointclouds.org/documentation/tutorials/compiling_pcl_windows.php#compiling-pcl-window ...
- Windows IEDA 编译Hbase源码报错 - 无法执行shell脚本
windows 下编译 hbase源码,报错 [ERROR] Command execution failed. java.io.IOException: Cannot run program &qu ...
- Win7下编译mosquitto源码
在windows下编译mosquitto源码使用的工具包括: 1.visual studio 2010(用vs .net 2003的编译器时cmake会提示未识别的c或c++编译器) 2.cmake ...
- 从零开始,手把手教你如何在Ubuntu下编译VLC-Android源码
前言 公司项目中使用的libvlcjni.so库文件,有点老,对Android 6.0+系统兼容性太差了,当程序运行在Android6.0+系统上时,回弹出警告框,提示libvlcjni.so:tex ...
- win7下编译python源码
win7下编译python源码 下载源码: 打开网页:https://www.python.org/downloads/release/python-2710/ 下载完成后解压即可 查看文档: 其实最 ...
- 在CentOS下编译VLC源码
在CentOS下编译VLC源码 一.下载VLC源码 二.VLC编译与安装 1.编译与安装 2.库文件 3.头文件 三.报错解决 1.configure: error: Could not find l ...
- mac下编译安卓源码
资源 Mac OS10.12 编译Android源码8.1 aosp编译-需翻墙 Mac下编译安卓源码 手把手教你在Mac OS下载.编译及导入Android源码 步骤 准备 磁盘空间大于180G 安 ...
- c++ 编译添加dll_VS2019编译lua源码
编译环境 Windows10 Microsoft Visual Studio 2019 准备工作 下载 lua 源码压缩包并解压, 其中 src 就是 lua 的源代码目录 官方下载地址 http:/ ...
最新文章
- NB-Iot烟感01:烟感探测器原理和规格
- 通过Visual Studio 2005的项目模板来加速开发过程
- 统计机器学习第二章 感知机
- 不装客户端连接mysql_C#不安装oracle客户端,如何连接到oracle数据库
- python islice_python文件操作细节
- css3实现科技感的呼吸灯效果
- 如何使用 .NET Core 安全地加/解密文件
- jitter单位_产生jitter的原因
- 数组-去重、排序方法、json排序
- 系统工程师Python工程师基础班
- java writer 乱码_Java servlet 使用 PrintWriter 时的编码与乱码
- 电磁场计算的服务器性能指标,有限公式电磁场数值计算理论与性能
- FMI飞马网|如何尽早的接触人工智能才不会被抢饭碗,2030年会怎么样?
- 计算机应用能力考试ppt2003,全国专业技术人员计算机应用能力考试_PPT_2003_题库版...
- Java OOP 7 JAVA 集合框架
- 内存泄漏问题该如何解决-面试学习笔记
- 音视频基础(四)音频文件格式转换(支持重采样采样位数为24位)
- 【http】微信网站使用的是http80端口或者https443端口访问
- matlab中牛顿下山法实例,非线性方程的数值解法牛顿下山法matlab
- css选择器 ~ (波浪号)、+(加号)、>(大于号)的用法解析和举例
热门文章
- MSChart使用导航之开发
- [转]几句不可不看的经典人生语句
- python打开excel的函数-Python读取excel文件中带公式的值的实现
- Windows PE导出表编程4(重构导出表实现私有函数导出)
- UVA10382喷水装置
- 【五线谱】变音记号 ( 升号 # | 降号 b | 重升号 x | 重降号 bb )
- 【Java 虚拟机原理】Class 字节码二进制文件分析 七 ( 局部变量表分析 )
- 【Java 注解】注解简介及作用
- 【数字信号处理】数字信号处理简介 ( 抽样定理 | 多抽样率 )
- 【Kotlin】Kotlin 领域特定语言 DSL 原理 一 ( DSL 简介 | 函数 / 属性扩展 )