2.6内核的源码树目录下一般都会有两种文件:Kconfig和Makefile。分布在各目录下的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文件相关的内核配置菜单。在内核配置make menuconfig等时,从Kconfig中读出配置菜单,用户配置完后保存到.config(在顶层目录下生成)中。在内核编译时,主Makefile调用这个.config,就知道了用户对内核的配置情况。假如要想添加新的驱动到内核的源码中,可以通过修改Kconfig来增加对我们驱动的配置菜单,这样就有途径选择我们的驱动,假如想使这个驱动被编译,还要修改该驱动所在目录下的Makefile。
驱动程序可以编译成内核模块也可以直接编译进内核。下面以字符设备驱动为例
1.将驱动代码拷贝到drivers/char/
#cp hello.c /root/linux-2.6.32.2/drivers/char/
Kconfig
#pwd
/root/linux-2.6.32.2
#vim /root/linux-2.6.32.2/drivers/char/
2.在drivers/char/Kconfig中添加代码
如下:颜色部分为添加的代码
menu "Character devices"
config HELLO_WORD
bool "helloword"
3.选中hello模块
#pwd
/root/linux-2.6.32.2
# make menuconfig ARCH=arm
进入Device Deivers -->Charater devices -->
选中helloword
![将驱动程序直接编译进内核 - 至庸 - THE BOLG OF CHEN](http://img2.ph.126.net/sz0Aogu-dI3rq3E7LVXlxA==/2507660567532818772.jpg)
CONFIG_HELLO_WORD=y
4.修改对应的Makefile
#pwd
# vim ./drivers/char/Makefile
添加
obj-$(CONFIG_HELLO_WORD) += hello.o //添加部分
obj-$(CONFIG_LEGACY_PTYS) += pty.o
obj-$(CONFIG_UNIX98_PTYS) += pty.o
obj-m则直接编译成模块
obj-$(CONFIG_HELLO_WORD)模型要根据配置项而定
5. 编译内核
# make uImage ARCH=arm CROSS_COMPILE=arm-linux-
转载于:https://blog.51cto.com/5815084/1140975