内核模块编程1

Linux设备驱动是以模块的形式驻留内存,设备驱动编程基本上遵循内核模块编程

准备文件


/*main.c*/
#include <linux/init.h>
#include <linux/module.h>
static int  hello_init(void)
{
   printk(”hello!hello_init\n”); 
   return 0;
}
static void  hello_exit(void)
{
   printk(”hello!hello_exit\n”);
}
module_init(hello_init);
module_exit(hello_exit); 

#Makefile
PWD= $(shell pwd)
KERNEL_SRC= /usr/src/linux-headers-2.6.27-7-generic/
obj-m := hello.o
hello-objs:=main.o
all:
       $(MAKE) –C $( KERNEL_SRC) M=$(PWD)
clean:
       rm *.ko
       rm *.o



将main.c 和Makefile放在同一目录下,执行make就会生成hello.ko
进入终端
>$make
>$sudo insmod ./hello.ko
>$dmesg
>$sudo rmmod ./hello.ko
>$dmesg

说明:
obj-m := hello.o 表明编译出的是hello.ko
hello-objs:=main.o 表明需要使用 main.c
M=$(PWD)是指明当前目录下查找源文件

原文地址:https://www.cnblogs.com/iwasmu/p/1491827.html