1. Makefile的分析:1)Linux内核编译简述:Linux2.6内核引入了kbuild机制,通过makemenuconfig配置把配置信息保存到.config文件中,当.config文件被改变之后,在重新编译,Kbuild能够保证只进行最小化的编译。Linux内核的编译系统主要包括的文件:交叉编译工具:是编译生成的可执行文件,负责提供内核编译过程中的交互,并把用户配置交互的结果保存到.config文件。Kconfig文件:位于各个子目录下,其定义了交互配置时的菜单信息。.config文件:内核配置文件,有配置工具生成.config文件。(即配置内核选项中出现的y,m,空)。Scripts/Makefiel:接受make相关的命令,并根据命令中的参数进行相应的操作。最主要的操作时编译内核文件的vmlinux和相关的模块文件。KbuildMakefies:分布在各个目录下,与Makefile不同。*.cmd文件:.cmd文件用于保存的历史编译参数和依赖信息,为以后的是否需要重新编译相关文件提供依据和参考。2)内核编译过程分析:编译过程,是由make命令引发的一系列操作。我们敲入的make命令,会找到相应的makefile文件,去执行其中的命令规则的。因为我们会在内核源文件的根目录下执行make命令,所以首先会从顶层的makefile中开始执。只使用make命令,即没有任何参数的情况之下,make会执行的是Makefile文件中的默认规则,即all:vmlinux这个规则。 vmlinux:$(vmlinux-lds)$(vminux-init)$(vmlinux-main)vmlinux.o$(kallsyms.o) F这样可以看出vmlinux的依赖的几项内容了。 对应这样的几个依赖文件,分别进行分析。 vmlinux-lds := arch/$(SRCARCH)/kernel/vmlinux.ldsvmlinux-init:= $(head-y) $(init-y)vmlinux-main:= $(core-y) $(libs-y) $(drivers-y) $(net-y)这些就是以上三个依赖项的定义了。vmlinux-lds的定义已经很清楚了,就是对应目录arch/x86/kernel/下的vmlinux.lds了。至于vmlinux-init的定义,就得到arch/x86/makefile文件中去看了。因为顶层的Makefile文件把这个Makefile文件也include进去了。其中head-y如下:head-y:= arch/x86/kernel/head_$(BITS).ohead-y+= arch/x86/kernel/head$(BITS).ohead-y+= arch/x86/kernel/head.ohead-y+= arch/x86/kernel/init_task.o至于BITS,按照要求之考虑32为的情况,即把BITS代换为32就可以了。所以,head-y有三个重要的文件组成,即head_32.S,head32.c,init_task.o文件。这也说明了其是与体系结构相关的。其中那个init-y如下:init-y := init/………vmlinux-all := $(vmlinux-init) $(vmlinux-main)vmlinux-dirs := $(patsubst %/,%,$(filter %/, $(init-y)$(init-m) $(core-y) $(core-m) $(drivers-y) $(drivers-m) $(net-y) $(net-m) $(libs-y) $(libs-m)))init-y := $(patsubst %/, %/built-in.o, $(init-y))…………这样可以看出,init-y是与体系结构无关的。一种涉及到了一个patsubs函数替换的工作。其中还有core-y:core-y := usr/……core-y += kernel/ mm/ fs/ ipc/ security/ crypto/block/……vmlinux-dirs := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) $(core-y) $(core-m) $(drivers-y) $(drivers-m) $(net-y) $(net-m) $(libs-y) $(libs-m)))core-y := $(patsubst %/, %/built-in.o, $(core-y))vmlinux-main:= $(core-y) $(libs-y) $(drivers-y) $(net-y)经过分析,分析core-y的定义,分析core-y中既包含体系结构相关的,又包含体系结构无关的内容。当然,没有把每一个文件都分析的很透彻了。
Linux 文件系统及文件操作常用命令Tiny6410 H.264远程视频监控实战相关资讯 Linux内核
- IT人员必须了解的六项Linux内核变 (今 12:05)
- Linux 内核更新:3.10.98、3.14.62 (02月26日)
- Linux:让手机运行主线内核 (11/26/2015 22:16:17)
| - Linux内核自防护项目 (05月24日)
- Linux 内核架构的理解 (12/09/2015 09:01:01)
- Linux内核被指缺乏安全性 (11/07/2015 08:28:47)
|
本文评论 查看全部评论 (0)