编写Bootloader时,用Makefile将.bin转.img遇执行错误求助
问题排查与解决
错误原因分析
- 命令不兼容:你在Windows环境下使用了Linux/Unix系统的
cp命令,Windows默认没有该命令,导致系统找不到指定程序。 - Makefile格式错误:从错误输出能看到
nasm命令和cp命令被混在一起执行(nasm src/main.asm -f bin -o build/main.bin cp -f build/main.bin),说明你的Makefile里这两个命令没有正确分隔,大概率是缩进用了空格而非Tab,或是两个命令写在同一行却未加正确分隔符。
解决步骤
1. 替换为Windows兼容命令
Windows下用copy命令替代cp,加上/Y参数实现强制覆盖(对应cp -f的效果)。
2. 修正Makefile格式
确保每个命令单独一行,且必须以Tab键开头(不能用空格),示例如下:
setup: @nasm src/main.asm -f bin -o build/main.bin @copy /Y build/main.bin build/main_floppy.img
@符号用于让make不输出命令本身,只显示执行结果,不需要的话可以去掉。- 如果是在WSL、MinGW等类Unix环境下执行Makefile,只需确保
cp命令可用,同时检查缩进为Tab即可。
内容的提问来源于stack exchange,提问作者Shahzaib Hassan
相关产品推荐
相关产品推荐

