目标
在 Windows 下编译安装 Lua 5.3.5。
环境
- Microsoft Windows 10 企业版 10.0.14393 版本 14393
方法
推荐在 C:\
下面建立一个 local
文件夹,用于像 linux 下 /usr/local 或者 /opt 一样来安装自定义的工具和库。
- 下载 MinGW Distro,这是 MinGW 的一个便捷版,可以免去平常安装 MinGW 了再从 mirror 上拉取软件包的麻烦操作。此处下载 https://nuwen.net/files/mingw/mingw-16.0.exe
- 如果16.0 链接下载失效,可以尝试 https://nuwen.net/files/mingw/history/mingw-17.1.exe。如果都失效,可以直接在 MinGW Distro 找最新版。此处 MinGW Distro 的版本变更后,后续路径请对应更改。
- 双击 mingw-16.0.exe,路径填写
C:\local\MinGW-16.0
,然后点击 Extract 等待解压完成
- 将
C:\local\MinGW-16.0\MinGW\bin
加入到环境变量Path
中。(环境变量设置方法参见Windows 10 设置环境变量) - 打开命令提示符,输入
where gcc
,输出如果包含C:\local\MinGW-16.0\MinGW\bin\gcc.exe
则表示上述步骤都正确无误。截图中笔者安装的 Haskell 也带有 MinGW 所以多出了 Haskell 路径下的 gcc.exe 信息。
- 下载 Lua 源码,官方地址 http://www.lua.org/ftp/ 此处选择 5.3.5 版本
- 将下载的
lua-5.3.5.tar.gz
解压放到C:\local
下。 - 新建一个文本文件,改名为
build.bat
,里面放入以下脚本内容(主要功能是创建需要的文件夹,编译lua,将成品拷贝到相应文件夹中并设置一些环境变量):
@echo off
:: ========================
:: build.bat
::
:: build lua to dist folder
:: tested with lua-5.3.5
:: based on:
:: https://medium.com/@CassiusBenard/lua-basics-windows-7-installation-and-running-lua-files-from-the-command-line-e8196e988d71
:: ========================
setlocal
:: you may change the following variable’s value
:: to suit the downloaded version
set work_dir=%~dp0
:: Removes trailing backslash
:: to enhance readability in the following steps
set work_dir=%work_dir:~0,-1%
set lua_install_dir=%work_dir%\dist
set compiler_bin_dir=%work_dir%\tdm-gcc\bin
set lua_build_dir=%work_dir%
set path=%compiler_bin_dir%;%path%
cd /D %lua_build_dir%
make PLAT=mingw
echo.
echo **** COMPILATION TERMINATED ****
echo.
echo **** BUILDING BINARY DISTRIBUTION ****
echo.
:: create a clean “binary” installation
mkdir %lua_install_dir%
mkdir %lua_install_dir%\doc
mkdir %lua_install_dir%\bin
mkdir %lua_install_dir%\include
mkdir %lua_install_dir%\lib
copy %lua_build_dir%\doc\*.* %lua_install_dir%\doc\*.*
copy %lua_build_dir%\src\*.exe %lua_install_dir%\bin\*.*
copy %lua_build_dir%\src\*.dll %lua_install_dir%\bin\*.*
copy %lua_build_dir%\src\luaconf.h %lua_install_dir%\include\*.*
copy %lua_build_dir%\src\lua.h %lua_install_dir%\include\*.*
copy %lua_build_dir%\src\lualib.h %lua_install_dir%\include\*.*
copy %lua_build_dir%\src\lauxlib.h %lua_install_dir%\include\*.*
copy %lua_build_dir%\src\lua.hpp %lua_install_dir%\include\*.*
copy %lua_build_dir%\src\liblua.a %lua_install_dir%\lib\liblua.a
echo.
echo **** BINARY DISTRIBUTION BUILT ****
echo.
%lua_install_dir%\bin\lua.exe -e "print [[Hello!]];print[[Simple Lua test successful!!!]]"
echo.
:: configure environment variable
:: https://stackoverflow.com/a/21606502/4394850
:: http://lua-users.org/wiki/LuaRocksConfig
:: SETX - Set an environment variable permanently.
:: /m Set the variable in the system environment HKLM.
setx LUA "%lua_install_dir%\bin\lua.exe" /m
setx LUA_BINDIR "%lua_install_dir%\bin" /m
setx LUA_INCDIR "%lua_install_dir%\include" /m
setx LUA_LIBDIR "%lua_install_dir%\lib" /m
pause
- 右键
build.bat
以管理员身份运行。成功时如图所示,会把 lua 编译到自动新建的
dist
文件夹下,并自动设置LUA
,LUA_BINDIR
,LUA_INCDIR
, 'LUA_LIBDIR` 这四个环境变量(因为设置这几个环境变量所以需要管理员权限。 - 将
C:\local\lua-5.3.5\dist\bin
加入到环境变量Path
中。 - 再次打开命令提示符,输入
where lua
,可以看到路径。输入lua
可以启动 lua REPL。至此全部完成。
后记
Lua 官网列出的 LuaDist, Lua For Windows,版本都过老,很久没更新了,LuaBinaries 里面只有 exe,而 dll 和 lib 之类的开发用文件要另外下载,但是可下载版本相当多,比较难选。综合来看,最省事的办法是自己编译安装。
参考
- http://www.lua.org/manual/5.3/readme.html
- Lua Basics - Windows 7 Installation and Running Lua Files from the Command Line