新建一个hello.c,输入一下内容:
- #include <linux/module.h>
-
#include <linux/kernel.h>
-
#include <linux/init.h>
-
-
MODULE_LICENSE ("GPL");
-
-
static int __init hello_init (void)
-
{
-
printk (KERN_INFO "Hello world\n");
-
return 0;
-
}
-
-
static void __exit hello_exit (void)
-
{
-
printk (KERN_INFO "Goodbye world\n");
-
}
-
-
module_init (hello_init);
-
module_exit (hello_exit);
该模块的作用是在模块插入kernel时打印: Hello world
在模块从kernel卸载时打印:Goodbye world
对应的Makefile的内容如下:
- EXTRA_CFLAGS += $(DEBFLAGS)
-
-
ifeq ($(KERNELRELEASE),)
-
-
KERNELDIR ?= your_kernel_path/linux-2.6.32.2 //这里写成你的kernel所在的路径
-
-
PWD := $(shell pwd)
-
-
modules:
-
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
-
-
modules_install:
-
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
-
-
clean:
-
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions
-
-
.PHONY: modules modules_install clean
-
-
else
-
obj-m := hello.o
-
endif
接下来运行make编译,成功后你将会看到hello.ko,将其放到开发板的根文件
系统中,使用insmod / lsmod / rmmod 命令进行调试。
阅读(1147) | 评论(0) | 转发(0) |