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
相关产品推荐
相关产品推荐

