Windows 下编译安装 Lua 5.3.5

目标

在 Windows 下编译安装 Lua 5.3.5。

环境

  • Microsoft Windows 10 企业版 10.0.14393 版本 14393

方法

推荐在 C:\ 下面建立一个 local 文件夹,用于像 linux 下 /usr/local 或者 /opt 一样来安装自定义的工具和库。

  1. 下载 MinGW Distro,这是 MinGW 的一个便捷版,可以免去平常安装 MinGW 了再从 mirror 上拉取软件包的麻烦操作。此处下载 https://nuwen.net/files/mingw/mingw-16.0.exe
  2. 双击 mingw-16.0.exe,路径填写 C:\local\MinGW-16.0,然后点击 Extract 等待解压完成
    示意
  3. C:\local\MinGW-16.0\MinGW\bin 加入到环境变量 Path 中。(环境变量设置方法参见Windows 10 设置环境变量)
  4. 打开命令提示符,输入 where gcc,输出如果包含 C:\local\MinGW-16.0\MinGW\bin\gcc.exe 则表示上述步骤都正确无误。截图中笔者安装的 Haskell 也带有 MinGW 所以多出了 Haskell 路径下的 gcc.exe 信息。
  5. 下载 Lua 源码,官方地址 http://www.lua.org/ftp/ 此处选择 5.3.5 版本
  6. 将下载的 lua-5.3.5.tar.gz 解压放到 C:\local下。
  7. 新建一个文本文件,改名为 build.bat,里面放入以下脚本内容(主要功能是创建需要的文件夹,编译lua,将成品拷贝到相应文件夹中并设置一些环境变量):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    @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
  8. 右键 build.bat 以管理员身份运行。 成功时如图所示,会把 lua 编译到自动新建的 dist 文件夹下,并自动设置 LUA, LUA_BINDIR, LUA_INCDIR, ‘LUA_LIBDIR` 这四个环境变量(因为设置这几个环境变量所以需要管理员权限。

  9. C:\local\lua-5.3.5\dist\bin 加入到环境变量 Path 中。
  10. 再次打开命令提示符,输入 where lua,可以看到路径。输入 lua 可以启动 lua REPL。至此全部完成。

后记

Lua 官网列出的 LuaDist, Lua For Windows,版本都过老,很久没更新了,LuaBinaries 里面只有 exe,而 dll 和 lib 之类的开发用文件要另外下载,但是可下载版本相当多,比较难选。综合来看,最省事的办法是自己编译安装。

参考