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

Makefile执行报错missing separator. Stop.该怎么解决?

Makefile missing separator. Stop. 报错解决方案

核心原因

  • Makefile规则中,目标对应的执行命令必须且仅能以1个制表符(Tab)开头,不允许使用空格,也不允许Tab和空格混合缩进。你当前贴出的Makefile中两条编译命令用了空格缩进,不符合语法要求;此外部分编辑器默认开启「Tab自动转空格」功能,会导致你输入的Tab被自动替换为空格,这也是你调整缩进后依然报错的常见原因。

修正后的Makefile代码

CC = gcc
CFLAGS = -I. -g -pthread -w
DEPS = main.h
OBJ = main.o

# 生成.o目标文件的规则
%.o: %.c $(DEPS)
	$(CC) -c -o $@ $< $(CFLAGS)

# 生成main可执行文件的规则
main: $(OBJ)
	$(CC) -o $@ $^ $(CFLAGS)

# 可选规则:生成randomgen可执行文件(适配你目录下带main函数的randomgen.c)
randomgen: randomgen.o
	$(CC) -o $@ $^ $(CFLAGS)

# 可选规则:清理所有编译产物
clean:
	rm -f *.o main randomgen

注:复制上述代码后,请确认$(CC)开头的命令行缩进为单个Tab字符,不要替换为空格。

校验与使用方法

  • 编辑完成后执行cat -A Makefile命令查看文件内容,若命令行开头显示^I字符,说明缩进为正确的Tab;如果显示为普通空格,需要先关闭编辑器的「Tab转空格」配置后重新修改缩进
  • 执行make即可编译出main程序
  • 如果需要编译randomgen程序,执行make randomgen即可
  • 执行make clean可以删除所有编译生成的.o文件和可执行文件

注意事项

  • main.c和randomgen.c都包含main函数,属于两个独立程序,不能合并链接到同一个可执行文件中,否则会报main函数重复定义错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:45:02