<转>windows下编译lua源码

简介:

因为之前一直使用 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行:

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

 

 

相关文章
|
6月前
|
开发工具 Android开发 git
Windows下载android2.2完整源码(转)
Windows下载android2.2完整源码(转)
86 3
|
6月前
|
Unix 编译器 开发者
Qt5.14.2 轻松掌握Qt中的压缩与解压缩:QuaZIP的神秘面纱与实战演练之windows环境编译
Qt5.14.2 轻松掌握Qt中的压缩与解压缩:QuaZIP的神秘面纱与实战演练之windows环境编译
640 0
|
1月前
|
并行计算 开发工具 异构计算
在Windows平台使用源码编译和安装PyTorch3D指定版本
【10月更文挑战第6天】在 Windows 平台上,编译和安装指定版本的 PyTorch3D 需要先安装 Python、Visual Studio Build Tools 和 CUDA(如有需要),然后通过 Git 获取源码。建议创建虚拟环境以隔离依赖,并使用 `pip` 安装所需库。最后,在源码目录下运行 `python setup.py install` 进行编译和安装。完成后即可在 Python 中导入 PyTorch3D 使用。
165 0
|
3月前
|
监控 机器人 Unix
GoLand——windows下如何编译Linux二进制文件
GoLand——windows下如何编译Linux二进制文件
53 1
GoLand——windows下如何编译Linux二进制文件
|
3月前
|
存储 数据可视化 Python
【python】python tkinter 计算器GUI版本(模仿windows计算器 源码)【独一无二】
【python】python tkinter 计算器GUI版本(模仿windows计算器 源码)【独一无二】
210 1
|
3月前
|
C++ Windows
Windows下编译64位CGAL
Windows下编译64位CGAL
116 0
|
3月前
|
编译器 Linux C语言
Windows下编译并使用64位GMP
Windows下编译并使用64位GMP
177 0
|
5月前
|
Windows
【Windows驱动开发】注册表的基本操作(创建、打开、修改、读取、枚举)(附源码)
【Windows驱动开发】注册表的基本操作(创建、打开、修改、读取、枚举)(附源码)
|
5月前
lua源码阅读
lua源码阅读
|
6月前
|
人工智能 安全 机器人
AI电销机器人系统源码部署:freeswitch安装Windows
在Windows上安装FreeSWITCH:访问官网下载安装程序,运行并按提示安装;选择安装路径和组件;等待安装完成;配置FreeSWITCH,修改设置;启动服务;测试其功能;如遇问题,参考官方文档或进行调试故障排除。记得定期更新维护以保证稳定安全。