【问题标题】:Makefile error - make: *** No rule to make target `boot.o', needed by `all'. StopMakefile 错误 - make: *** No rule to make target `boot.o', `all' 需要。停止
【发布时间】:2012-12-05 16:33:26
【问题描述】:

我正在学习类似 unix 的内核开发教程,但我确信遇到了一个完全的菜鸟问题:谁能告诉我这有什么问题?

SOURCES=boot.o main.o

CFLAGS=-nostdlib -nostdinc -fno-builtin -fno-stack-protector
LDFLAGS=-Tlink.ld
ASFLAGS=-felf

all: $(SOURCES) link 

clean:
    -rm *.o kernel

link:
    ld $(LDFLAGS) -o kernel $(SOURCES)

.s.o:
    yasm $(ASFLAGS) $

提前致谢

【问题讨论】:

  • 你检查过boot.o文件是否存在吗?
  • @SidR,不,它找不到规则来编译它
  • @aleguna 是的。但是如果你已经有了 boot.o 文件,就不需要编译了。

标签: makefile kernel yasm


【解决方案1】:

您正在使用old-fashioned suffix rules,但缺少一些设置(加上最后一行的错误)。

改用普通模式规则,尝试修复旧样式规则没有意义:

%.o: %.s
    yasm $(ASFLAGS) $<

【讨论】:

    【解决方案2】:

    假设boot.o 和main.o 是使用yasm 构建的,您的makefile 缺少.o 的规则

    .o:
        yasm $(ASFLAGS) $
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-02
      • 1970-01-01
      • 2020-05-04
      • 1970-01-01
      相关资源
      最近更新 更多