make: 只生成vmlinux
make uImage:生成vmlinux并且使用mkimage工具生成uImage(uImage是在mlinux前面加上64字节头部,具体格式kernel和uboot有相关约定)。
/* linux-2.6.22.6\arch\arm\Makefile */ zImage Image xipImage bootpImage uImage: vmlinux /* linux-2.6.22.6\Makefile ; include $(srctree)/arch/$(ARCH)/Makefile*/ all: vmlinux vmlinux: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) $(kallsyms.o) FORCE >>> vmlinux-lds := arch/$(ARCH)/kernel/vmlinux.lds { lds和代码分析示例: in lds: .text.head : { _stext = .; _sinittext = .; *(.text.head) } in head.S: .section ".text.head", "ax" .type stext, %function code... } vmlinux-init := $(head-y) $(init-y) { head-y := arch/arm/kernel/head.o arch/arm/kernel/init_task.o /* linux-2.6.22.6\arch\arm\Makefile */ init-y := init/built-in.o ; /*init/文件夹下面的所有代码被编译成init/built-in.o */ } vmlinux-main := $(core-y) $(libs-y) $(drivers-y) $(net-y) { core-y := 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 := $(libs-y1) $(libs-y2) libs-y1 := lib/lib.a libs-y2 := lib/built-in.o drivers-y := drivers/built-in.o sound/built-in.o net-y := net/built-in.o }
原文:http://www.cnblogs.com/mylinux/p/5055428.html