前言
最近挺忙的,疫情加课程,另外还在不断学习Linux,都要忘了和大家分享了。不过它还是来了,在第二章学习完之后,我对Linux的一些概念有了了解,至于能不能口述,还得背背,而对于makefile吗,知道怎么用,会移植就好了,它其实算个脚本吧。在这一章,将学习模块化编程的步骤和规范。let's go...
一、makefile脚本
在这里,提供一个makefile,供大家使用(注意make和rm前面是tab键,不是空格):
1. obj-m := hello.o # 改成自己的模块名字 hello.o 对应hello.c 2. KERN_VER = $(shell uname -r) 3. KDIR := /lib/modules/$(KERN_VER)/build 4. all: 5. make -C $(KDIR) M=$(PWD) modules 6. clean: 7. rm -f *.ko *.o *.mod.o *.mod.c *.symvers *.bak *.order
二、模块化编程步骤
1.
模块加载函数(必须):当通过insmod命令加载内核模块时,模块的加载函数会自动被内核执行,完成本模块相关初始化工作;
模块卸载函数(必须):当通过rmmod命令卸载模块时,模块的卸载函数会自动被内核执行,完成与模块加载函数相反的功能;
2.
块许可证声明(必须):模块许可证(LICENCE)声明描述内核模块的许可权限,如果不声明LICENCE,模块被加载时将收到内核被污染的警告。
1和2是模块化编程必须的,另外还有一些可选的。
模块参数(可选):模块参数是模块被加载的时候可以被传递给他的值,它本身对应模块内部的全局变量;
模块导出符号(可选):内核模块可以导出符号(symbol,对应于函数或变量),这样其他模块可以使用本模块中的变量或函数;
模块作者等信息声明(可选)。
总结
以上就是模块化编程的步骤。