前言
lua是一个非常好用的动态语音,最适合嵌入其他程序中使用。
我已经见过很多软件使用lua脚本让用户自定义想要的功能,而那些软件为lua提供接口即可,完成高度可定制的需求。
例如大名鼎鼎的Redis就使用lua作为嵌入脚本,还有Nginx-lua,Skynet等我用过的软件都是嵌入lua脚本。
因此编译lua成了基本操作,完成了这个基本操作,才能进行下一步的定制。
编译
- Linux只需要准备gcc环境,这个比较简单。window可参考我这篇文章。
- 下载lua源码下载地址,完了使用cmd命令行窗口进入lua的src目录。
- Linux下:make linux test,windos下:make mingw test,然后就可以编译成功。
- 为编译后的可执行程序添加图标:
 准备一个lua.rc文件,在这个文件中可以定义编译后的exe文件很多其他信息,内容如下:
- id ICON "lua.ico"
- 1 VERSIONINFO
- FILEVERSION     5,4,2,0
- PRODUCTVERSION  5,4,2,0
- BEGIN
-   BLOCK "StringFileInfo"
-   BEGIN
-     BLOCK "080404E4"
-     BEGIN
-       VALUE "CompanyName", "Janbar Company"
-       VALUE "FileDescription", "Janbar build lua"
-       VALUE "FileVersion", "5.4.2"
-       VALUE "InternalName", "lua"
-       VALUE "LegalCopyright", "Janbar"
-       VALUE "OriginalFilename", "lua.exe"
-       VALUE "ProductName", "lua"
-       VALUE "ProductVersion", "5.4.2"
-     END
-   END
-   BLOCK "VarFileInfo"
-   BEGIN
-     VALUE "Translation", 0x804, 1252
-   END
- END
准备一个lua.ico的图片文件,我是48×48的大小。
然后修改Makefile,修改方法如下所示。
- LUA_T=	lua
- LUA_O=	lua.o luarc.o  # 增加luarc.o一起编译出lua.exe
- LUAC_T=	luac
- LUAC_O=	luac.o luarc.o  # 增加luarc.o一起编译出luac.exe
- mingw:
- 	windres lua.rc -O coff -o luarc.o   #这里增加一行编译lua.rc文件
- 最终编译出来的可执行程序如下图所示:

- 下图表示编译后的可执行程序按照lua.rc中填写的信息展示。

总结
自己动手编译lua可执行程序过程中虽然遇到了很多问题,但都一一解决了,最后保存编译后的结果,美滋滋。
需要注意的是编译后需要使用的文件有:lua.exe、luac.exe、lua54.dll
另外我研究使用lua字节码定制功能的实例项目go_lua_c,可以参考参考。