我对编写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.c
, boot.asm
,link.ld
文件。
Q1。为什么没有编写命令来生成main.o
frommain.c
和boot.o
from boot.asm
?
Q2。最后几行是什么意思?
.so:
nasm $(ASFLAGS) $<
Q3 CFLAGS
定义在顶部,但没有在任何地方使用!?编译时是否会自动考虑它们?
Q4在任何地方都没有为从源代码转换为.o
文件而编写的命令。makefile 工作正常并生成所需的可执行文件?