您的位置:首页 > 其它

添加内核模块之入门helloworld.ko

2011-01-05 21:45 417 查看
首先 是从一个西邮学生看到的,比较好的入门方式:

首先是hello.c的文件:主要要说明对内核的编程只能使用内核头文件,所以通常我们都使用makefile来控制编译过程

#include "linux/init.h"
#include "linux/module.h"
#include "linux/kernel.h"
//必选
//模块许可声明
MODULE_LICENSE("Dual BSD/GPL");
//模块加载函数
static int hello_init(void)
{
printk(KERN_ALERT "hello,I am edsionte/n");
return 0;
}
//模块卸载函数
14
static void hello_exit(void)
15
{
16
printk(KERN_ALERT "goodbye,kernel/n");
17
}
18
//模块注册
19
module_init(hello_init);
20
module_exit(hello_exit);
21
//可选
22
MODULE_AUTHOR("edsionte Wu");
23
MODULE_DESCRIPTION("This is a simple example!/n");
24
MODULE_ALIAS("A simplest example");


然后编写Makefile:make的注释 #后面的字符

obj-m += hello.o
#generate the path
CURRENT_PATH:=$(shell pwd)
#the current kernel version number
LINUX_KERNEL:=$(shell uname -r)
#the absolute path
LINUX_KERNEL_PATH:=/usr/src/linux-headers-$(LINUX_KERNEL)
#complie object
all:
make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) modules
#clean
clean:
make -C $(LINUX_KERNEL_PATH) M=$(CURRENT_PATH) clean


编译生成hello.ko

insmod hello.ko 加载内核模块

dmesg 查看开机过程中的信息,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: