1.Linux 内核模块编写三个模块文件mainmod.c、lenmod.c、summod.c,在mainmod模块调用summod模块对数组进行求和运算,summod模块调用lenmod模块求数组中元素的个数。注意路径清晰,分别在三个目录下编写。
作业题目如上,Linux 内核模块编程流程如下:
1.第一步查看内核版本:
2.下载内核编程模块
lyum install kernel-deve
安装失败参考.
安装完成该目录下/usr/src/kernels有内核文件夹
3.现在可以可是内核模块编程了,首先我们先了解内核模块C语言和应用程序C语言区别:
4.代码如下:
文件目录如
summod.c源码:
modpram下的Makefile为:
module1文件夹下的mainmod.c:
module1下的Makefile:
module2下的lenmmod.c:
module2下的Makefile:
全建立完后开始编程:
依次到三个文件夹下make命令:此为成功!
如果遇到:
需要把它依赖的Module.symvers复制\覆盖到该文件夹:具体操作:
summod.c需要module2下的Module.symvers
在modpram目录下:
lcp /root/modpram/module2/Module.symers /root/modpram
mainmod.c需要modpram下的Module.symvers
在module1目录下:
lcp /root/modpram/Module.symers /root/modpram/module1
全部make完后开始插入内核模块
在三个文件夹下分别执行
linsmod lenmod.ko
linsmod summod.ko
linsmod mainmod.ko
完成后用dmesg |tail -10查看模块输出信息:(数组为{3,4,7,8,-1}-1为结束符,长度为4,和为22)
最后退出模块:
lrmsmod lenmod
lrmsmod summod
lrmsmod mainmod
完成!