linux内核配置编译过程

1、linux内核配置

linux内核的配置,其本质是获取到.config文件,配置的方法一般分为以下三种:

(1)直接执行Make menuconfig,自行选择每一项(很少这样用);

(2)根据控制器类型在arcn/arm/configs中选择合适的xxx_defconfig文件,执行make xxx_defconfig,然后再执行make menuconfig进行简单修改即可(初次开发常用);

(3)别人已经开发完产品的.config文件直接复制过来,然后再根据需求执行make menuconfig进行简单修改(项目组开发常用)。

选择上述其中一种方法进行配置,然后执行make命令即可编译内核。

2、Make menuconfig用法

执行Make menuconfig的目的一般是对.config文件进行简单调整,执行该命令后会进入如下图文界面:

具体操作方法如下:

(1)按上、下、左、右键进行菜单选择

(2)按enter键进入当前菜单的子菜单 

(3)按esc返回上一级

(4)y键选择将模块编译进内核,n键不编译进,m键编译为模块(ko文件)

(5)?键查看帮助

(6)/键进入查找框,可以查询模块的路径

3、.config文件的使用

以DM9000网卡为例,首先在make menuconfig中将其配置为Y:

 退出menuconfig后在.config文件中可以查看到该项的配置:

3.1 内核源码的使用

在内核的源码中有类似如下的使用 :

CONFIG_DM9000这个宏定义位于include/linux/autoconf.h中, 该文件中定义的宏是根据.config中的配置来自动生成的,如果DM9000在执行make menuconfig的时候设置为n,那么在include/linux/autoconf.h文件中就不会出现#define CONFIG_DM9000 1这行代码。

 3.2 子目录的Makefile使用

在drivers/net/Makefile 中有以下使用:

 $(CONFIG_DM9000)即对CONFIG_DM9000变量进行取值,在进行编译的时候,obj-y表示编译进内核,obj-m则表示编译为模块,CONFIG_DM9000这个变量在include/config/auto.conf中定义,该文件也是根据.config生成的,查看该文件可以发现CONFIG_DM9000被赋值为y:

4、总结

内核的配置过程主要是为了生成.config文件,配置完成后执行make编译内核,内核源码和Makefile文件会根据配置对各个模块进行处理,最终生成uImage文件。

猜你喜欢

转载自blog.csdn.net/cesheng3410/article/details/128753678