Makefile报错'missing separator. Stop',求助有效解决方案
解决Makefile:1: *** missing separator. Stop 错误
问题
执行Makefile时触发错误:Makefile:1: *** missing separator. Stop,此前搜索Makefile:7: *** missing separator. Stop的相关方案,但对当前第1行报错的情况无效。
我的Makefile内容(通过cat -e -t -v mk.t输出)
Kaizen ~/so_test $ cat -e -t -v mk.t 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 -t bin -o $(BUILD_DIR)/main.bin
解决方法
- 检查第1行格式:确保
ASM=nasm顶格书写,前面没有空格、Tab或不可见特殊字符(比如UTF-8 BOM头)。如果文件是Windows下编辑后传到Linux的,可执行dos2unix Makefile转换格式,或用vim打开后执行:set nobomb再保存以去除BOM头。 - 确认命令行缩进:规则下的
cp、truncate、$(ASM)行必须用单个Tab键开头,绝对不能用空格替代——这是Makefile的硬性要求。 - 核对文件名:如果Makefile文件名为
mk.t,执行make时需指定文件名:make -f mk.t;如果是默认的Makefile或makefile,直接执行make即可。
内容的提问来源于stack exchange,提问作者Ori
相关产品推荐
相关产品推荐

