方便起见,直接下载msys2:MSYS2 安装之
进入msys2安装目录下包管理器服务器配置文件所在路径
...\msys2\etc\pacman.d
为了选择速度快的软件包下载服务器
将这三行
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch
分别加入划线的三个文件的开头
一行加一个,按顺序来
然后进入msys2命令行
更新msys2系统软件包:
运行 pacman -Syu
有多个包选择时用空格分隔
更新其他基础包,运行 pacman -Su
然后,pacman -S gcc 安装gcc,有多个包选择时用空格分隔
gcc命令可用后,关闭 msys2命令窗口
下载lua源码 Lua: download
lua5.x.x.ta.gz
拷贝到 msys2下的home/xxx
打开mingw64 命令行
初始目录就是上面的 拷贝路径,
于是解压
tar -zxvf lua-5.x.x.tar.gz
cd lua-5.x.x
不用到src里面,外层即可
执行make mingw
不出意外,不会报错
进入 src目录,删除.o,创建目录拷贝结果等等,可以弄个sh执行
#!/bin/bash
rm -rf *.o
mkdir lua
mkdir lua/bin
mkdir lua/include
mkdir lua/lib
cp luac.exe lua53.dll lua.exe ./lua/bin
cp lauxlib.h lua.h lua.hpp lua.hpp lualib.h ./lua/include
cp liblua.a ./lua/lib
#------------------------------------------------------------------------
至此,lua mingw版本编译安装完毕, 将lua文件夹拷贝到自己想放的位置,window下别忘记将lua/bin,加入环境变量
下载luasocket源码
GitHub - diegonehab/luasocket: Network support for the Lua language
git clone或者和直接下zip都可以
将上一步弄出来的lua中的bin,include,lib分别拷贝到 msys2安装目录下的usr/local
我的是D:\Dev\Env\msys2\usr\local
lua/bin/* =====>/usr/local/bin/lua/5.3
lua/include/* =====>/usr/local/include/lua/5.3
lua/lib/* ========> /usr/local/lib/lua/5.3
将 lua/bin/lua53.dll 也拷贝到 /usr/local/lib/lua/5.3
mingw64 命令行进入代码目录,src外面那级
make PLAT=mingw LUAV=5.3 LUAINC_mingw_base=/usr/local/include LUALIB_mingw_base=/usr/local/lib LUAPREFIX_mingw=/usr/local/bin install
看这个命令知道为什么要拷贝lua到/usr/local/下了吧,也可以指定其他位置,不过外面得包上lua/5.3两层目录,有问题多半是路径问题,查看 gcc命令的inc
编译完后,即可删除/usr/local/bin,/usr/local/include, /usr/local/lib/下的lua文件夹,
这里拷贝主要是上面的make 总是到那个位置找,不想去动它的make,那就拷贝了,
如果以后也要在msys2下使用lua,那就是lua/bin ====> /usr/local/bin, lua/include====>
/usr/local/include, lua/lib====>/usr/local/lib, 对应拷贝下就可以,不用 lua/5.3那一层,麻烦!
最后,将 /usr/local/bin/lua/5.3 下的 lua, mime,socket 拷贝到 lua/bin
include, lib没有生成东西,不用处理,至此,lua和 luasocket需要的都在 lua文件下了,
可以弄个文件测试下,在 lua/bin下创建文本hello.lua
-- hello.lua
local socket = require"lua/socket"
local mime = require"lua/mime"
print("Hello from " .. socket._VERSION .. " and " .. mime._VERSION .. "!")
cmd 进入 lua/bin
lua hello.lua
Done!Enjoy!