主要是给自己看的
1.准备源文件
起名叫mymod.c
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello, world\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);
2.编写Makefile文件
这是抄别人的http://blog.csdn.net/hanchaoman/article/details/6962293,但是注意在default和clean下面要有tab分隔符,不能用空格代替,会出错,博客上打不出来tab...
还有Makefile,M要大写
Makefile
obj-m := modules.o
modules-objs:= mymod.o
KDIR := /lib/modules/`uname -r`/build
PWD := $(shell pwd)
default:
make -C $(KDIR) M=$(PWD) modules
clean:
rm -rf *.o .* .cmd *.ko *.mod.c .tmp_versions
3编译
进入终端,需要进入你的Makefile和源文件的目录
输入make
4加载卸载模块
用insmod和rmmod,要root权限
insmod modules.ko
rmmod modules
这个“modules”名字就是makefile第一行的那个。
我用的ubuntu14.04,输出可以在/var/log/syslog中找到
Dec 8 15:15:59 syj-Inspiron-5520 kernel: [ 6730.734175] Hello, world
Dec 8 15:17:01 syj-Inspiron-5520 CRON[5589]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Dec 8 15:18:33 syj-Inspiron-5520 AptDaemon: INFO: Quitting due to inactivity
Dec 8 15:18:33 syj-Inspiron-5520 AptDaemon: INFO: Quitting was requested
Dec 8 15:20:13 syj-Inspiron-5520 kernel: [ 6984.808345] Goodbye, cruel world