You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MinGW环境下通过Makefile编译Lua 5.1.5出现ld找不到文件错误

故障原因

链接阶段报找不到#、DLL、needs这类文件,是因为Makefile里的注释内容被错误当成链接输入文件传给了ld。
从错误日志里的gcc执行命令可以看到,命令末尾多了# DLL needs all object files这段内容——这本来是Lua 5.1.5源码src/Makefile中写的代码注释,正常POSIX兼容的make工具会自动忽略#开头的注释内容,但你当前用的是Chocolatey安装的Windows原生版make,对Makefile语法解析存在兼容缺陷,没有过滤这段注释,直接把注释拆成多个文件名传给链接器,才触发了找不到文件的报错。

修复方案

任选一种操作即可解决问题:

  • 直接修改src/Makefile,找到链接生成lua51.dll的规则行,删掉行尾的# DLL needs all object files注释内容,保存后重新执行make mingw即可正常编译,这个方法操作最快,不需要调整现有环境配置。
  • 替换当前调用的make程序,改用MSYS2环境自带的make(路径一般为C:/msys64/usr/bin/make.exe或MinGW64对应目录下的make),这类适配POSIX标准的make可以正确识别Makefile注释,不会把注释内容传给编译器。
  • 不要直接在PowerShell里调用Chocolatey安装的make,先打开MSYS2的MinGW64终端,进入源码目录后再执行make mingw命令,也能避开语法兼容问题。

内容的提问来源于stack exchange,提问作者dydy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 00:18:38