一个入门级的Linux内核模块编写

其实有时入门一但出了问题,会严重打消学习的积极性,入门解决了,一切也变得容易了。
在网上也看过许多人对遇到各种问题的解答,许多都属撤谈,没有多少实用的东西。
如果你进行的顺利,那么祝贺你,你已正式成为一名Linux内核程序员 吐舌头
首先编写一个hello.c的源代码:
#include <linux/module.h>
#include <linux/kernel.h>


int init_module(void)
{
printk("<1>Hello,world\n");
return 0;
}


void cleanup_module(void)
{
printk("<1>Goodbye world\n");
}

不能按老书上的讲法去编译了,应该编写一个Makefile,内容如下:
obj-m += hello.o
all:
		make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
		make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean

上面的hello.o由自己定,如果是hello_world.c,那么就是编译成hello_world.o
跳到代码目录,输入:
make
编译这个模块
会发现会产生好几个文件,其中有个后缀为ko的文件,这个就是刚才编译的模块
可以查看该模块的信息:
modinfo ./hello.ko
首先将该模块介入内核:
insmod ./hello.ko
如果用的是X-windows,你可能不会看到任何信息输出,其实信息已经输出到系统的日志文件中,若想查看该信息,输入:
dmesg | tail
看到最后几行,就是模块运行时的信息
最后卸下刚才的模块:
rmmod ./hello.ko
还可以查看模块卸载的信息:
dmesg | tail
看到最后几行


补充一下:可以按 ctrl+alt+F2,登陆字符界面,跳到刚才编写的模块目录,输入insmod ./hello.ko和rmmod ./hello.ko,会直接在字符界面输出模块加载内核的信息,和模块卸载的信息。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值