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

Ubuntu下执行make命令报错Makefile:2: *** missing separator. Stop.求助

问题排查与解决

核心问题

从你执行cat -e -t -v makefile的输出可以看到,每行末尾都带有^M$标记——这是Windows系统的CRLF(回车+换行)换行符,而Ubuntu使用的是Linux风格的LF(仅换行)换行符。make对文件格式非常敏感,会把^M当成行内容的一部分,导致解析规则时出错,哪怕你已经用了制表符也无法解决这个问题。

解决方法

你可以通过以下几种方式修复文件的换行符:

  • 安装并使用dos2unix转换文件:
    sudo apt install dos2unix
    dos2unix makefile
    
  • 用sed命令直接替换掉回车符:
    sed -i 's/\r$//' makefile
    
  • 在Vim编辑器中修改文件格式:
    打开文件后执行:
    :set fileformat=unix
    :w
    

修复后再执行cat -e -t -v makefile,你会看到^M消失,同时制表符会显示为^I,此时再运行make命令应该就能正常执行了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:45:49