了解内核创建的makefile

时间:2013-10-14 07:23:08

标签: makefile cmake

我有关于编写makefile的基本想法。但我发现很难理解这个makefile。

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:
    nasm $(ASFLAGS) $<

我的文件夹包含main.cboot.asmlink.ld个文件。

Q1。为什么没有编写命令来从main.o main.cboot.o boot.asm生成CFLAGS

Q2。最后一行表示什么?

  

.s.o:
         nasm $(ASFLAGS)$&lt;

Q3 .o在顶部定义,但未在任何地方使用!?它们是否在编译时自动考虑?

Q4 没有为从任何地方的源代码转换为{{1}}文件而编写的命令。 makefile工作正常,并生成所需的可执行文件?

1 个答案:

答案 0 :(得分:1)

Q2:这是从.o(汇编源文件)生成.s的规则。

Q1:因为它刚刚解释过的规则所涵盖。

问题4:有.s.o规则,makebuilt-in rule用于编译C模块。

问题3:上述从.o创建.c的规则需要考虑CFLAGS