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

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)开头的行)用的是空格,这是触发报错的直接原因。

解决步骤

  1. 打开你的Makefile文件
  2. 定位到所有规则下的命令行(即依赖目标下方的执行语句)
  3. 将这些行开头的空格全部替换为单个制表符(Tab)
  4. 保存修改后的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 07:32:07