Linux内核模块编译方法

一、分类

静态编译:静态编译即为将驱动直接编译进内核 调试完之后,采用该方法
动态编译:动态编译即为将驱动编译成模块

二、动态编译

这里提供一个Makefile,动态编译区分单文件与多问见,详细见Makefile内容:

#obj-m = demo.o 单文件
obj-m = demo.o
demo-objs = 1.o 2.o 3.o
              
PWD := $(shell pwd)
KDIR:=/lib/modules/$(shell uname -r)/build/ 
all:
	make -C $(KDIR) M=$(PWD) modules

clean:
	make -C $(KDIR) M=$(PWD) clean

三、静态编译
这里先了解Kconfig和Makefile的作用

Kconfig:对应内核模块的配置菜单。

Makefile:对应内核模块的编译选项。

linux内核编译过程:是根据配置裁剪的结果配合Makefile完成内核编译。
编译步骤:

1 源文件放到内核相应的目录下,我们这里是一个字符设备驱动,所以把源文件放到了/lib/modules/2.6.32-358.el6.i686/build/drivers/char
2.Kconfig:添加一个配置选项菜单

config DEMO /* Makefile中编译可变选项中宏的名字,作用就是定义一个可以选择的变量 /
tristate “Hello Driver added by Dong” /
make menuconfig 菜单界面显示的信息,tristate 提供Y M N三种选项 /
default n /
菜单选项默认为N /
help
test for adding driver to menuconfig. /
一些帮助信息,写不写没有关系 */

  1. 修改Makefile,添加如下内容:
obj-$(CONFIG_DEMO) += demo.o

4.make menuconfig 就可以找到我们刚才添加的模块,默认是Y,保存退出,之后即可在.config中查看到添加的新模块。
5. make uImage:编译到内核内部

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值