编写内核驱动的通用Makefile

 一般的在编写内核驱动的时候可以使用一个通用的Makefile,免去了自己编写的麻烦,下面附上我自己用的一个文件:
ifneq ($(KERNELRELEASE) , )
#  call from kernel build system
module
- objs  :=  hello . o
obj
- m     :=  hello . o

else

KERNELDIR 
?=   / lib / modules / $(shell uname  - r) / build
PWD       
:=  $(shell pwd)
   modules
:
    $(MAKE) 
- C $(KERNELDIR) M = $(PWD)  modules
    endif

clean
:
    rm 
- rf  *. *~  core  . depend  .*. cmd  *. ko  *. mod . . tmp_versions


module - objs  := 这个后面是一个通用的.o文件合集,有多少个.c文件,就要有多少个对应的.o文件,比如:

有file1.c和file2.c
那么,就要如下写法:
module - objs  := file1 . o file2.o
最后这个module-objs中的module要用obj-m中的.o文件的名字代替。
hello - objs  :=  hello . o
obj - m     :=  hello . o
如果是 module - objs  := file1 . o file2.o中有多文件,后面的 obj - m     :=  hello . o中的.o文件不要跟module-objs里面的重名。
最后看一个例子,有两个.c文件,hello.c和hello1.c,如下:
/* ======================================================================
    A simple kernel module: "hello world"  
======================================================================
*/

/*
*hello.c
*/
#include 
< linux / init.h >
#include 
< linux / module.h >

MODULE_LICENSE(
" GPL " );

static   int  hello_init( void )
{
  printk(KERN_ALERT 
"  Hello World in,ztz0223 " );
  
return   0 ;
}

module_init(hello_init);
MODULE_AUTHOR(
" ztz0223 " );
MODULE_DESCRIPTION(
" A simple Hello World Module " );
MODULE_ALIAS(
" a simplest module " );


//  hello1.c
#include  < linux / init.h >
#include 
< linux / module.h >
static   void  hello_exit( void )
{
  printk(KERN_ALERT 
"  Hello World quit, ztz0223!   " );
}
module_exit(hello_exit);


最后就是makefile:

ifneq ($(KERNELRELEASE)
, )
#  call from kernel build system
my_hello - objs  :=  hello . o hello1 . o
obj
- m     :=  my_hello . o
else
KERNELDIR 
?=   / lib / modules / $(shell uname  - r) / build
PWD       
:=  $(shell pwd)
modules
:
    $(MAKE) 
- C $(KERNELDIR) M = $(PWD)  modules
endif
clean
:
    rm 
- rf  *. *~  core  . depend  .*. cmd  *. ko  *. mod . . tmp_versions

那么最后生成的内核模块就是
my_hello.ko,就可以加载和卸载了
还有一点就是上面的makefile 不要从上面直接复制,要手动按照上面编写。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值