子Makefile
将某个驱动编译到内核中:
obj-m += a.o b.o
将多个驱动文件编译成一个.o
obj-$(CONFIG_ISDN_I4L) += isdn.o
isdn-y := isdn_net_lib.o isdn_v110.o isdn_common.o
Documentation/kbuild/ makefiles.txt
主makefile
(1)all: modules
查看modules的依赖
(2)modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
Makefile中.PHONY的含义
(1)伪造的目标
(2)执行这个目标不是为了得到某个文件或东西,而是单纯为了执行这个目标下面的命令。
(3)生成vmlinux(内核镜像)
/opt/aarch64-ca53-linux-gnueabihf-8.4.01/usr/bin/aarch64-ca53-linux-gnu-ld -EL -maarch64elf --no-undefined -X --fix-cortex-a53-843419 --build-id -o vmlinux -T ./arch/arm64/kernel/vmlinux.lds --whole-archive built-in.a --no-whole-archive --start-group arch/arm64/lib/lib.a lib/lib.a --end-group
(4)第一个文件:
arch/arm/kernel/head.S
(5)链接脚本:
arch/arm/kernel/vmlinux.lds