Makefile报错‘missing separator’求助:无法生成.img文件
解决Makefile中"missing separator"错误的方案
问题说明
执行make命令时触发如下错误:
Makefile:7: *** missing separator. Stop.
涉及的Makefile代码:
ASM=nasm SRC_DIR=src BUILD_DIR=build $(BUILD_DIR)/main_floppy.img: $(BUILD_DIR)/main.bin cp $(BUILD_DIR)/main.bin $(BUILD_DIR)/main_floppy.img truncate -s 1440k $(BUILD_DIR)/main_floppy.img $(BUILD_DIR)/main.bin: $(SRC_DIR)/main.asm $(ASM) $(SRC_DIR)/main.asm -f bin -o $(BUILD_DIR)/main.bin
错误原因
Makefile语法强制要求:规则中的命令行必须以制表符(Tab)开头,你当前代码里的命令行(cp、truncate、$(ASM)开头的行)用的是空格,这是触发报错的直接原因。
解决步骤
- 打开你的Makefile文件
- 定位到所有规则下的命令行(即依赖目标下方的执行语句)
- 将这些行开头的空格全部替换为单个制表符(Tab)
- 保存修改后的Makefile
额外优化建议
- 自动创建构建目录:Makefile不会自动生成
build目录,可添加伪目标实现自动创建,避免手动操作:.PHONY: prepare prepare: mkdir -p $(BUILD_DIR) $(BUILD_DIR)/main.bin: prepare $(SRC_DIR)/main.asm $(ASM) $(SRC_DIR)/main.asm -f bin -o $(BUILD_DIR)/main.bin - 汇编代码细节优化:你的引导扇区代码逻辑正确,建议将
dw 00AA55h改为dw 0xAA55,这是NASM更通用的十六进制写法,兼容性更好。
内容的提问来源于stack exchange,提问作者Emil-Viktor Schwarze
相关产品推荐
相关产品推荐

