编译Info-Zip Unzip时遇Makefile missing separator错误求助
编译Info-Zip Unzip时Makefile错误的原因及解决方法
错误原因
你使用的这个Makefile是微软NMAKE工具专用的语法,而通过Chocolatey安装的make是GNU Make(GNU版构建工具),两者语法完全不兼容:
!IFNDEF、!ENDIF这类是NMAKE的条件判断指令,GNU Make无法识别,因此会抛出「missing separator」错误——即便删除这段代码,其他同类NMAKE语法的行也会触发相同问题。
解决方法
方法一:用微软NMAKE工具编译(推荐,适配Windows环境)
- 安装Visual Studio或Build Tools for Visual Studio(仅需安装C++构建工具组件,无需完整IDE);
- 打开VS自带的「开发者命令提示符」(或对应架构的「Native Tools Command Prompt」);
- 进入Unzip源码目录,执行Windows专属编译命令:
Info-Zip的Unzip源码自带nmake -f win32/Makefile.w32win32目录,里面有专门适配Windows环境的Makefile。
方法二:继续使用GNU Make,适配语法或工具链
- 先安装mingw工具链(可通过Chocolatey安装
mingw包); - 调用源码中适配GNU Make的配置文件,比如unix目录下的版本:
make -f unix/Makefile - 若要修改现有Makefile,需将NMAKE语法替换为GNU Make语法:
- 将
!IFNDEF debug改为ifndef debug - 将
!ENDIF改为endif
注意:其他NMAKE特有指令也需对应替换,这种方式容易遗漏,不如直接用现成适配的Makefile高效。
- 将
内容的提问来源于stack exchange,提问作者Minh Tri
相关产品推荐
相关产品推荐

