注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

小白的博客

嵌入式爱好者

 
 
 

日志

 
 

linux-2.6.22.6分析——Makefile分析  

2012-08-14 00:42:19|  分类: 韦东山视频第二轮 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
1、Makefile文件的作用
核心作用三点:
(1)决定哪些文件被编译
(2)怎样编译这些文件
(3)怎样连接这些文件,最重要的是他们的顺序如何

2、.config文件
make s3c2410_defconfig会将配置信息写入.config文件里面,Makefile文件都是直接或间接根据.config文件来决定编译哪些文件。
在顶层目录包含:include/config/auto.conf:
auto.conf就是根据.config文件生成的,并且加入了一些顶层Makefile文件的定义!顶层Makefile文件就是根据auto.conf编译!

3、从顶层Makefile开始分析

我们知道编译内核实际就是生成:vmlinux,于是:
vmlinux: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) $(kallsyms.o) FORCE

vmlinux-init := $(head-y) $(init-y)
vmlinux-main := $(core-y) $(libs-y) $(drivers-y) $(net-y)
vmlinux-all  := $(vmlinux-init) $(vmlinux-main)
vmlinux-lds  := arch/$(ARCH)/kernel/vmlinux.lds
kallsyms.o := .tmp_kallsyms$(last_kallsyms).o

我们可以看到内核的生成依赖于:head-y、init-y、core-y、libs-y、drivers-y、net-y

对于head-y、init-y、core-y、libs-y、drivers-y、net-y这些东西我们就不在贴代码了,直接说他们怎么生成的:
编译内核时,将依次进入init-y、core-y、libs-y、drivers-y、net-y所列出的目录,执行他们的Makefile文件,每个子目录都会生成一个built-in.o(libs-y所列目录下,有可能生成lib.a文件)。也就是说init-y、core-y、libs-y、drivers-y、net-y就对应着各个built-in.o文件,最后head-y所表示的文件和这些built-in.o文件被连接成内核文件vmlinux。

这里需要特别说明一下的是head-y所表示的文件,它是表示入口文件,看:
include $(srctree)/arch/$(ARCH)/Makefile
ARCH=arm
所以:
head-y := arch/arm/kernel/head$(MMUEXT).o arch/arm/kernel/init_task.o
我们看到入口文件是:head.S
  评论这张
 
阅读(646)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017