内核配置与编译宏观分析
2016-07-31 16:20
211 查看
内核配置与编译宏观分析
通过配置,我们可以控制各功能是否被使用,以及配置一些参数给内核主要涉及Kconfig、.config、menuconfig、Makefile
1.涉及文件详览
Kconfig位于kernel源码内大部分的文件夹中,是一种特殊格式的文件,负责提供kernel各个功能的配置选项,需要注意的是,Kconfig仅仅负责提供配置选项本身,而不提供各选项的值。其具体语法分析详见kernel中的Kconfig详尽分析.config产生于配置阶段,是arch/arm/configs/xxx_defconfig的复制品,而xxx_defconfig是原厂提供的各个配置项的值,里面都是CONFIG_开头的变量,以CONFIG_DM9000为例,其默认值为y:
CONFIG_DM9000=y
menuconfig是kernel提供的一个工具,可以方便的阅读所有Kconfig、可以方便的修改.config,如果分别在menuconfig中修改配置选项的值为:Y或N或M,则.config中的变量会自动变为:值为y或未被定义或值为m
主Makefile没什么好多说的,里面的伪目标是所有配置操作的入口;各个子Makefile根据 .config中CONFIG_开头的变量来判断各个文件是否被编译。例:
obj-$(CONFIG_DM9000) += dm9000.o
这句表示,如果CONFIG_DM9000变量值为y,则obj += dm9000.o,因此dm9000.c会被编译;如果CONFIG_DM9000变量未定义,则dm9000.c不会被编译。如果CONFIG_DM9000变量的值为m则会被连接成模块
下面是整个流程图
2.设备树的编译
对于3.x版本后的内核,还需要增加一步编译设备树,编译过程很简单:make xxx.dtb
其中,xxx是arch/arm/boot/dts下我们要选用的dts的名字
3.保存.config为defconfig
其实执行过make xxx_defconfig后产生的.config会比原来的defconfig多近2000行配置,这些配置在执行make xxx_defconfig自动添加进去的。那我们用menuconfig修改了.config后,如何将其正确的保存为defconfig呢?使用如下命令即可
make savedefconfig && mv defconfig arch/arm/configs/xxx_defconfig
4.编译并导出module
make modules
编译完的ko文件被分散在各个目录中,此时我们可以使用如下命令,将其集中导出到/lib/modules/xxxx
make modules_install INSTALL_MOD_PATH=./modules
相关文章推荐
- U-boot配置及编译阶段流程宏观分析
- Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装
- Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装
- s3c2440 内核启动流程分析之配置和编译
- Linux 内核编译 LOCALVERSION 配置(分析内核版本号自动添加的"+"号)
- 内核的配置和编译及代码分析(一)
- U-boot配置及编译阶段流程宏观分析
- 05-S3C2440学习之内核(初步)编译、配置过程分析
- 内核的配置和编译——分析
- 学习笔记 --- LINUX内核的配置与编译分析
- 【分享】分析内核的配置与编译过程
- Linux 2.6.19.x 内核编译配置选项简介
- Linux 2.6.19.x 内核编译配置选项简介
- Linux 2.6.19.x 内核编译配置选项简介
- Linux 2.6.19.x 内核编译配置选项简介
- Linux 2.6.19.x 内核编译配置选项简介
- 内核编译配置选项简介 (2.4.18-rmk7-pxal)
- Linux 2.6.19.x 内核编译配置选项简介
- Linux 2.6.19.x 内核编译配置选项简介
- Linux 2.6.19.x 内核编译配置选项简介