- //plp.c
- #include <linux/module.h>
-
#include <linux/init.h>
-
-
static int hello_init(void)
-
{
-
printk("Hello linux_kernel,i'm lthyxy.\n");
-
return 0;
-
}
-
-
static void hello_exit(void)
-
{
-
printk("bye,i will comeback!\n");
-
}
-
-
MODULE_AUTHOR("liutengfei
" ); -
MODULE_DESCRIPTION("plp example");
-
MODULE_LICENSE("GPL");
-
-
module_init(hello_init);
- module_exit(hello_exit);
- //Makefile
- obj-m += plp.o
-
all:
-
make -C /usr/src/linux-source-2.6.32 M=$(shell pwd) modules
-
clean:
- make -C /usr/src/linux-source-2.6.32 M=$(shell pwd) clean
- obj-m += plp.o
- linux-source-2.6.32 就是你的内核源代码目录的名字
- plp 就是你编写的模块的名字
- 之前一直出问题是由于没有把内核更新.
- 编译跟安装内核可以第一篇文章.
- 这2个文件放在同一目录下,且不要跟内核源代码目录在一起
- 如果都无误.
- 输入命令 make
- 你应该可以看见这样的东西:
- make -C /usr/src/linux-source-2.6.32 M=/home/lth modules
make[1]: 正在进入目录 `/usr/src/linux-source-2.6.32'
Building modules, stage 2.
MODPOST 1 modules
make[1]:正在离开目录 `/usr/src/linux-source-2.6.32' - 这样表示编译成功.
- 现在你可以看看编译生成的模块的信息,
- 输入命令 modinfo plp.ko
- 可以看见这样的东西:
- filename: plp.ko
license: GPL
description: plp example
author: liutengfei
srcversion: 73FE812EBE8779ABACD68F0
depends:
vermagic: 2.6.32.44+drm33.19 SMP mod_unload modversions 586
注意这里 2.6.32.44+drm33.19 这个版本号一定要跟你 unmae -r 看见的版本号一致. - 如果一切正常,现在可以转载和卸载模块了.
- 装载 insmod plp.ko
- 卸载 rmmod plp
- 装载后你也可以看是否装载进去了,
- 查看全部已经装载的模块的信息 输入 lsmod 你可以找到你刚才装好的模块的名字
- 怎么知道他已经运行了呢?
- 输入 dmesg
- 你可以看见
- [ 1755.734425] Hello linux_kernel,i'm lthyxy.
[ 1771.969181] bye,i will comeback!
这就是全部过程了.比写个C语言的hello,word复杂多了.但是很有挑战.希望你也一路顺风.