使用luarocks安装luafilesystem报错:mingw32-gcc未识别
报错根因
该编译报错由两个配置问题共同导致:
- Luarocks默认构建配置会查找32位MinGW的
mingw32-gcc编译器,当前系统环境中无对应可执行文件,或可执行文件路径未加入系统Path - 旧版MinGW官网安装包源已失效,会触发下载错误;通过MSYS2安装的MinGW默认不会自动将编译器目录加入Windows系统环境变量,且64位MinGW的默认编译器名为
x86_64-w64-mingw32-gcc.exe,和Luarocks默认查找的文件名不匹配,因此即使安装完成也会触发相同报错。
解决步骤
按顺序操作即可修复:
- 配置MinGW系统环境变量
默认路径安装的MSYS2 64位MinGW的bin目录为C:\msys64\mingw64\bin,将该路径添加到Windows系统环境变量的Path项中(不要添加到用户变量,避免权限差异导致的识别失败)。添加完成后新开PowerShell窗口,执行gcc --version,能正常输出版本号即代表路径配置生效。 - 修改Luarocks编译器配置
找到Luarocks安装目录下对应Lua版本的配置文件,一般命名为config-5.3.lua(文件名中的版本号和你本地安装的Lua版本匹配即可,通常存放在Luarocks安装根目录,或Lua安装目录下的luarocks子目录中),修改配置内的编译器变量为当前系统可识别的gcc:
配置中直接指定CC为variables = { CC = "gcc", LD = "gcc", AR = "ar rcus", RANLIB = "ranlib" }gcc即可,不需要写全称,因为前面已经把MinGW的bin目录加入Path,系统可以直接识别到gcc命令。 - 临时验证方案(无需修改配置文件)
如果需要快速测试,可以在安装前临时指定当前PowerShell会话的编译器环境变量,再执行安装命令:$env:CC = "gcc" luarocks install luafilesystem - 注意事项
安装完成后执行luarocks list,能看到luafilesystem条目即代表安装成功。不要尝试使用老旧的MinGW32官网安装包,其官方源已经停止维护,必然出现下载失败问题,MSYS2提供的MinGW是目前Windows平台下维护最稳定的版本,配置正确即可正常编译所有Lua C模块。
内容的提问来源于stack exchange,提问作者Jab
相关产品推荐
相关产品推荐

