使用Makefile时遇'e=2:系统找不到指定文件'错误,如何解决?
解决Windows下Makefile执行cp/truncate命令找不到的问题
问题原因
你遇到的CreateProcess(NULL, cp ...) failed错误,是因为Windows原生环境没有cp和truncate这些Linux/Unix系统的命令,Make在执行时找不到对应的可执行文件,所以报错。
解决方案
方案1:改用Windows原生命令替换
直接修改Makefile,把Linux命令换成Windows支持的命令:
ASM=nasm SRC_DIR=src BUILD_DIR=build $(BUILD_DIR)/main_floppy.img: $(BUILD_DIR)/main.bin copy $(BUILD_DIR)\main.bin $(BUILD_DIR)\main_floppy.img fsutil file seteof $(BUILD_DIR)\main_floppy.img 1474560 # 1440KB = 1440*1024 = 1474560字节,用fsutil设置文件大小 $(BUILD_DIR)/main.bin: $(SRC_DIR)/main.asm $(ASM) $(SRC_DIR)/main.asm -f bin -o $(BUILD_DIR)/main.bin
注意:Makefile里的命令行必须用Tab键缩进,不能用空格,否则会触发其他错误。
方案2:安装GNU工具集(保留Linux命令写法)
通过Chocolatey安装包含cp、truncate等命令的工具包:
- 以管理员身份打开命令提示符(CMD)或PowerShell
- 执行命令:
choco install coreutils
- 安装完成后,重新打开终端,进入项目目录执行
make即可。
另外,如果你已经安装了Git,也可以直接用Git Bash来运行make——Git Bash自带一套完整的Linux命令工具集,直接在Git Bash里进入项目目录执行make就能正常运行原来的Makefile。
内容的提问来源于stack exchange,提问作者EvoCorps
相关产品推荐
相关产品推荐

