make uImage 展开:
1.uImage: vmlinux
uImage 依赖 vmlinux
2.vmlinux: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) $(kallsyms.o) FORCE
分别展开 vmlinux-lds vmlinux-init vmlinux-main kallsyms.o
vmlinux-lds := arch/$(ARCH)/kernel/vmlinux.lds
==>vmlinux-lds := arch/$(ARCH)/kernel/vmlinux.lds
--------------------------------------------------------------------------------------------------------------------------------
vmlinux-init := $(head-y) $(init-y)
head-y := arch/arm/kernel/head$(MMUEXT).o arch/arm/kernel/init_task.o
init-y := init/
init-y := $(patsubst %/, %/built-in.o, $(init-y))
==>vmlinux-init := arch/arm/kernel/head$(MMUEXT).o arch/arm/kernel/init_task.o init/built-in.o
--------------------------------------------------------------------------------------------------------------------------------
vmlinux-main := $(core-y) $(libs-y) $(drivers-y) $(net-y)
core-y += arch/arm/kernel/ arch/arm/mm/ arch/arm/common/
core-y += $(MACHINE)
core-y := usr/
core-y += kernel/ mm/ fs/ ipc/ security/ crypto/ block/
core-y := $(patsubst %/, %/built-in.o, $(core-y))
==>core-y = arch/arm/kernel/built-in.o
arch/arm/mm/built-in.o
arch/arm/common/built-in.o
usr/built-in.o
kernel/built-in.o
mm/built-in.o
fs/built-in.o
ipc/built-in.o
security/built-in.o
crypto/built-in.o
block/built-in.o
libs-y := arch/arm/lib/ $(libs-y)
libs-y := lib/
==>libs-y = lib/lib.a lib/built-in.o
==>drivers-y := drivers/built-in.o sound/built-in.o
==>net-y = net/built-in.o
--------------------------------------------------------------------------------------------------------------------------------
kallsyms.o := .tmp_kallsyms$(last_kallsyms).o
--------------------------------------------------------------------------------------------------------------------------------
生成过程和上述顺序一致,分别进入目录依次生成 .o /.a 文件
make uImage console log:
make -f scripts/Makefile.build obj=scripts
make -f scripts/Makefile.build obj=scripts/mod
make -f scripts/Makefile.build obj=init
CHK include/linux/compile.h
/bin/bash /home/yu/work/linux/linux-2.6.22.6/scripts/mkcompile_h include/linux/compile.h \
"arm" "" "" "arm-linux-gcc -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Os -m