首页 > 其他 > 详细

编译kernel: 内核的生成过程

时间:2015-12-17 22:14:12      阅读:199      评论:0      收藏:0      [点我收藏+]

  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 
	}

  

编译kernel: 内核的生成过程

原文:http://www.cnblogs.com/mylinux/p/5055428.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!