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浅析

  • 2017年11月06日 15:45
  • 183KB
  • 下载

Linux内核Makefile浅析

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

Linux内核Makefile浅析(一)

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

嵌入式 Linux内核Makefile浅析

1. 配置系统的基本结构   Linux内核的配置系统由三个部分组成,分别是:   Makefile:分布在 Linux 内核源代码中的 Makefile,定义 Linux 内核的编译规则...
  • skdkjxy
  • skdkjxy
  • 2014年09月18日 18:24
  • 587

Linux内核配置系统浅析

  • 2012年06月22日 17:44
  • 383KB
  • 下载

Linux内核配置系统浅析

  • 2011年11月24日 11:49
  • 116KB
  • 下载

linux内核Makefile整体分析

转自: 目录 一、概述   1、本文的意义   2、Linux内核Makefile文件组成 二、Linux内核Makefile的“make解析”过程   1 顶层M...

编译Linux内核模块的简单Makefile

  • 2012年12月23日 21:34
  • 278B
  • 下载

linux内核学习(7)粗略走走kbuild Makefile编译流程

今天看Makefile文件,我头大了,此Makefile非彼Makefile,里面多了很多内置命令,比如origin、patsubst等等啦,这 些都没听说过,更可恶的是,连网上都没有,可见,这是一...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux内核Makefile浅析
举报原因:
原因补充:

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