Linux内核Makefile浅析

原创 2013年12月05日 17:25:56

Makefile:顶层Makefile,整个内核配置、编译的总体控制文件。

.config:内核配置文件,包含由用户选择的配置选项,用来存放内核配置后的结果(如 make config)。

arch/*/Makefile:位于各种CPU体系目录下的Makefile,如arch/arm/Makefile,是针对特定平台的Makefile。

各个子目录下的Makefile:比如drivers/Makefile,负责所在子目录下源代码的管理。

Rules.make:规则文件,被所有的Makefile使用。

用户通过make config配置后,产生了.config。顶层Makefile读入.config中的配置选择。顶层Makefile有两个主要的任务:产生vmlinux文件和内核模块(module)。为了达到此目的,顶层Makefile递归的进入到内核的各个子目录,分别调用位于这些子目录中的Makefile。至于到底进入到哪些子目录,取决于内核的配置。

在顶层Makefile中,有一句:include arch/$(ARCH)/Makefile,包含了特定CPU体系结构下的Makefile,这个Makefile中包含了平台相关的信息。

位于各个子目录下的Makefile同样也根据.config给出的配置信息,构造出当前配置下需要的源文件列表,并在文件的最后有include $(TOPDIR)/Rules.make。

 Rules.make 文件起着非常重要的作用,它定义了所有 Makefile 共用的编译规则。比如,如果需要将本目录下所有的 c 程序编译成汇编代码,需要在 Makefile 中有以下的编译规则:

%.s: %.c
$(CC) $(CFLAGS) -S $
有很多子目录下都有同样的要求,就需要在各自的 Makefile 中包含此编译规则,这会比较麻烦。而 Linux内核中则把此类的编译规则统一放置到 Rules.make 中,并在各自的 Makefile 中包含进了 Rules.make(include Rules.make),这样就避免了在多个 Makefile 中重复同样的规则。对于上面的例子,在 Rules.make 中对应的规则为:
%.s: %.c
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$(*F)) $(CFLAGS_$@) -S $

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Linux内核Makefile浅析

1. 配置系统的基本结构 Linux内核的配置系统由三个部分组成,分别是: 1.   Makefile:分布在 Linux 内核源代码中的 Makefile,定义 Linux 内核的编译规则; ...

Linux内核Makefile浅析

1. 配置系统的基本结构 Linux内核的配置系统由三个部分组成,分别是:Makefile:分布在 Linux 内核源代码中的 Makefile,定义 Linux 内核的编译规则; 配置文件(con...

Linux内核Makefile浅析

1. 配置系统的基本结构 Linux内核的配置系统由三个部分组成,分别是: 1.   Makefile:分布在 Linux 内核源代码中的 Makefile,定义 Linux 内核的...

Linux内核Makefile浅析(一)

1. 配置系统的基本结构 Linux内核的配置系统由三个部分组成,分别是: Makefile:分布在 Linux 内核源代码中的 Makefile,定义 Linux 内核的编译规则; 配...

Linux内核Makefile浅析

原文链接: http://hi.baidu.com/yjicllignqbkovq/item/819c75a40fc073aa29ce9d71 Linux内核Makefile浅析 1...

Linux内核配置系统浅析

  • 2012-06-22 17:44
  • 382KB
  • 下载

Linux内核Makefile文件

Linux内核Makefile文件(翻译自内 核手册) 转载自:http://blog.chinaunix.net/uid-21651676-id-60377.html Linux 内...

Linux内核配置系统浅析

  • 2011-11-24 11:49
  • 116KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)