原文链接:https://www.cnblogs.com/nerohwang/p/3621316.html
hello.c 文件:
#include <linux/kernel.h> /*Needed by all modules*/
#include <linux/module.h> /*Needed for KERN_* */
#include <linux/init.h> /* Needed for the macros */
MODULE_LICENSE("GPL");
static int year=2014;
static int hello_init(void)
{
printk(KERN_WARNING "Hello kernel, it's %d!\n",year);
return 0;
}
static void hello_exit(void)
{
printk("Bye, kernel!\n");
}
/* main module function*/
module_init(hello_init);
module_exit(hello_exit);
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
测试结果:
[root@controller test]# make CONFIG_STACK_VALIDATION= make -C /lib/modules/3.10.0-693.el7.x86_64/build M=/root/test modules make[1]: Entering directory `/usr/src/kernels/3.10.0-693.el7.x86_64' CC [M] /root/test/hello.o Building modules, stage 2. MODPOST 1 modules CC /root/test/hello.mod.o LD [M] /root/test/hello.ko make[1]: Leaving directory `/usr/src/kernels/3.10.0-693.el7.x86_64'
查看编译后文件:
[root@controller test]# ll total 204 -rw-r--r-- 1 root root 441 Nov 2 14:28 hello.c -rw-r--r-- 1 root root 93768 Nov 2 14:30 hello.ko -rw-r--r-- 1 root root 787 Nov 2 14:30 hello.mod.c -rw-r--r-- 1 root root 52872 Nov 2 14:30 hello.mod.o -rw-r--r-- 1 root root 44016 Nov 2 14:30 hello.o -rw-r--r-- 1 root root 166 Nov 2 14:29 Makefile -rw-r--r-- 1 root root 27 Nov 2 14:30 modules.order -rw-r--r-- 1 root root 0 Nov 2 14:30 Module.symvers