Chinaunix首页 | 论坛 | 博客
  • 博客访问: 183571
  • 博文数量: 42
  • 博客积分: 606
  • 博客等级: 中士
  • 技术积分: 440
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-14 15:51
文章分类

全部博文(42)

文章存档

2013年(3)

2012年(39)

我的朋友

分类:

2012-03-16 17:22:09

   接下来我们看子目录文件的编译,lib目录比较简单,我们先看lib,lib目录的编译过程清楚了,driver目录的编译过程也就可以按同样的原理再现场景。lib目录的Makefile如下所示:
 
  #O_TARGET是该Makefile最终产生的目标文件名称
  1 O_TARGET := lib.o
  2
  #obj-y是构成O_TARGET的目标文件成员
  3 obj-y := boot_kernel.o heap.o memory.o
  4 obj-y += command.o exec.o
  5 obj-y += ctype.o printk.o
  6 obj-y += misc.o
  7 obj-y += load_file.o
  8 obj-y += string.o
  9 obj-y += time.o
 10 obj-$(CONFIG_RESET_HANDLING) += reset_handle.o
 11 obj-$(CONFIG_MEMORY_RAM_TEST) += memtst.o
 12
 #subdir-y要执行编译的子目录,在subdir-y下还有Makefile
 13 subdir-y        := priv_data
 14
 #$(TOPDIR)/Rules.make是O_TARGET和subdir-y编译的具体实现
 #打个比方,前面
O_TARGET、obj-y、subdir-y就是输入参数,而
 #$(TOPDIR)/Rules.make则是函数实现,它实现两个功能:1)将
 #obj-y中的目标文件编译成名字为
O_TARGET的目标文件。2)执行subdir-y
 #目录下的Makefile
 15 include $(TOPDIR)/Rules.make

   通过上面的注释,我们可以比较清楚的了解lib目录下的Makefile。这是一个典型的子目录Makefile文件:O_TARGET、obj-y、subdir-y、$(TOPDIR)/Rules.make四个成员,前2个成员是一组、第3个成员一组、第四个成员一组。第一组和第二组可选,第三组则是必须的。其它子目录的Makefile也都是这种形式。以上这种形式简洁明了,而且比较灵活, 那它是怎么实现的呢,其奥秘就在$(TOPDIR)/Rules.make中,也就是根目录下的Rules.make文件,下面我们就一起走进Rules.make。
阅读(738) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~