内核模块编程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)是指明当前目录下查找源文件

你可能感兴趣的:(编程)