hello模块编译及Makefile解读

来源:互联网 发布:linux 部署tomcat 编辑:程序博客网 时间:2024/06/06 19:14

#include<linux/init.h>
#include<linux/kernel.h>
#include<linux/module.h>

MODULE_LICENSE("Dual BSD/GPL");//另一个特别的宏(MODULE_LICENSE)是用来告知内核,该模块带有自由软件许可

                                                                                                                               

static int hello_init(void)
{

   printk(KERN_EMERG "Hello world\r\n");
   return 0;
}

static void hello_exit(void)

{

        printk(KERN_EMERG "Exit !\n");

}

module_init(hello_init);   //使用了内核提供的module_init宏,内核在加载是调用函数hello_init

module_exit(hello_exit); //使用了内核提供的module_exit宏,内核在加载是调用函数hello_exit


Makeflie文件

#makefile

obj-m :=helloModule.o                                    //模块文件名

KERNELDIR :=/usr/src/kernels/2.6.32-431.el6.i686        //指明了内核所在的目录

PWD :=$(shell pwd)                                                    //当前模块文件目录

all:

        make -C $(KERNELDIR) M=$(PWD) modules
.PHONY :clean

clean:

        rm -rf *.o *ko

                   
 这个命令首先是改变目录到用 -C 选项指定的位置(即内核源代码目录)。这个 M= 选项使Makefile在构造modules目标前,返回到模块源码目录。然后,modules目标指向obj-m变量中设定的模块。









0 0
原创粉丝点击