第三章 linux学习之路分享③--------模块化编程

前言
        最近挺忙的,疫情加课程,另外还在不断学习Linux,都要忘了和大家分享了。不过它还是来了,在第二章学习完之后,我对Linux的一些概念有了了解,至于能不能口述,还得背背,而对于makefile吗,知道怎么用,会移植就好了,它其实算个脚本吧。在这一章,将学习模块化编程的步骤和规范。let's go...

一、makefile脚本
        在这里,提供一个makefile,供大家使用(注意make和rm前面是tab键,不是空格):

obj-m := hello.o # 改成自己的模块名字 hello.o 对应hello.c
KERN_VER = $(shell uname -r)
KDIR := /lib/modules/$(KERN_VER)/build
all:
    make -C $(KDIR) M=$(PWD) modules
clean:
    rm -f *.ko *.o *.mod.o *.mod.c *.symvers *.bak *.order

二、模块化编程步骤
1.
      模块加载函数(必须):当通过insmod命令加载内核模块时,模块的加载函数会自动被内核执行,完成本模块相关初始化工作;
      模块卸载函数(必须):当通过rmmod命令卸载模块时,模块的卸载函数会自动被内核执行,完成与模块加载函数相反的功能;

块许可证声明(必须):模块许可证(LICENCE)声明描述内核模块的许可权限,如果不声明LICENCE,模块被加载时将收到内核被污染的警告。

1和2是模块化编程必须的,另外还有一些可选的。

模块参数(可选):模块参数是模块被加载的时候可以被传递给他的值,它本身对应模块内部的全局变量;

模块导出符号(可选):内核模块可以导出符号(symbol,对应于函数或变量),这样其他模块可以使用本模块中的变量或函数;
      模块作者等信息声明(可选)。

总结
        以上就是模块化编程的步骤,接下来将继续给大家带来,字符设备的编写和字符设备的规范。

posted @ 2022-11-14 23:27  Paranoid-up  阅读(56)  评论(0)    收藏  举报