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

makefile提示No rule to make target 'build-x86_64'错误如何修复?

排查步骤
  • 确认执行make build-x86_64的工作目录为Makefile所在根目录,不要在子目录下执行命令
  • 检查规则缩进:Makefile中所有目标对应命令的行首必须使用tab缩进,不能用空格代替,否则规则会被make忽略
  • 执行make -p查看已加载的所有规则,确认build-x86_64规则是否被正常解析,是否因为语法错误被跳过
  • 验证源码路径有效性:检查src/impl/x86_64目录是否存在,目录下是否有.asm后缀的汇编文件。如果路径为空,x86_64_asm_source_files变量会被赋值为空,导致后续依赖解析失败
  • 检查build-x86_64规则的命令语法:原规则第一行命令mkdir -p dist/x86_64 && .中的单独.是非法语法,会导致整段规则失效
修复方案
  1. 替换所有规则命令行首的空格为tab缩进
  2. 修正build-x86_64规则的第一行命令,将mkdir -p dist/x86_64 && .改为mkdir -p dist/x86_64 && \
  3. 确保src/impl/x86_64路径下存在至少一个.asm后缀的汇编源文件
  4. 可在Makefile开头添加$(info ASM source files: $(x86_64_asm_source_files))调试变量,执行make时查看输出的源码列表是否符合预期

修正后的完整Makefile参考:

x86_64_asm_source_files := $(shell find src/impl/x86_64 -name *.asm)
x86_64_asm_object_files := $(patsubst src/impl/x86_64/%.asm, build/x86_64/%.o, $(x86_64_asm_source_files))

$(x86_64_asm_object_files): build/x86_64/%.o : src/impl/x86_64/%.asm
	mkdir -p $(dir $@) && \
	nasm -f elf64 $< -o $@

.PHONY: build-x86_64
build-x86_64: $(x86_64_asm_object_files)
	mkdir -p dist/x86_64 && \
	x86_64-elf-ld -n -o dist/x86_64/kernel.bin -T targets/x86_64/linker.ld $(x86_64_asm_object_files) && \
	cp dist/x86_64/kernel.bin targets/x86_64/iso/boot/kernel.bin && \
	grub-mkrescue /usr/lib/grub/i386-pc -o dist/x86_64/target.iso targets/x86_64/iso

内容的提问来源于stack exchange,提问作者ItsNova

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 12:45:06