linux驱动的加载,移除,编译及其Makefile简单编写(一)

首先下载linux-3.14,解压然后进入目录,打开Makefile里面有199行选择编译工具为arm-linux-然后保存退出,然后make fs4412也就是编译你的板子,提示你没有这个编译规则,你就使用make fs4412_defconfig
它会提示你没有这个板子,它应该在的目录是arch/arm/configs/下,没有就直接 make exynos_defconfig
然后再来make uImage;
编译了我们就可以向内核插入模块了
先创建一个目录,取名dmodle吧,随便取,然后再进入dmoudle创建一个Makefile文件,内容如下:

PWD=$(shell pwd)
KERNEL_SRC=/home/farsight/linux-3.14-fs4412//这是内核所在的绝对路径,根据你内核所放位置输入
obj-m :=module.o//obj-m 意思是将后面跟的东东编译成内核模块。相对应还有:
				//obj-y 编译进内核
				//obj-n 不编译
all ://全部编译
	make -C $(KERNEL_SRC) M=$(PWD) modules//编译规则编译源文件进内核
clean://终端命令模式下make clean就可以删除以下的文件
	rm *.ko
	rm *.o
	rm module.mod.c modules.order Module.symvers

多个源文件编译生成一个内核模块
Makefile

PWD=$(shell pwd)
KERNEL_SRC=/home/farsight/linux-3.14-fs4412
obj-m :=module.o
module-objs =module.o fun.o//添加这句会将moudle.c 和fun.c一起编译
all:
	make -c $(KERNEL_SRC) M=$(PWD) modules
	mv *.ko /home/farsight/ko//把ko后缀的文件放入ko目录中
clean:
	-rm *.ko//加-如果出错会忽略错误继续执行;
	 rm *.o
	 rm *.mod.c *.order *.symvers

内核模块的相应工具

insmod //加载指定目录下的一个.ko文件到内核,.ko是意思:k是kernel,o是obj
用法:
insmod module.ko//可以指定当前路径下的module.ko
insmod /home/module.ko//可以指定绝对路径下的module.ko
	dmesg//查看控制台信息
	dmesg |grep module.ko//检测内核模块module.ko的加载情况//dmesg还有很多用法
modprobe//自动加载模块到内核,相对于insmod更加智能,
//但是前提条件是模块要执行安装操作,最好再使用该命令前使用一次depmod命令
depmod//更新模块的依赖信息
用法:
depmod 
modprobe module//不用指定路径和后缀;更加智能,如果B模块加载需要A模块,那么必须先存在A模块,才能加载
modinfo//查看模块的信息,在安装了模块并运行depmod命令后,可以不指定路径和后缀,
//也可以指定查看某一特定模块.ko的模块信息,示例如下
modinfo module//查看moudle模块的信息
rmmod//如果内核模块设置为允许卸载模块,那么rmmod将指定的模块从内核中卸载。示例如下
rmmod module//卸载moudle模块
dmesg
modprobe -r 模块//注意不加后缀,和rmmod用法一样,移除加载的模块
modprobe -l//查看模块列表
modprobe -c//查看模块的配置文件,如别名是什么
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值