Chinaunix首页 | 论坛 | 博客
  • 博客访问: 268346
  • 博文数量: 74
  • 博客积分: 1336
  • 博客等级: 中尉
  • 技术积分: 1057
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-02 09:33
文章分类

全部博文(74)

文章存档

2016年(6)

2015年(4)

2014年(20)

2013年(8)

2012年(16)

2010年(9)

2009年(11)

我的朋友

分类: LINUX

2012-08-03 17:43:32

Linux2.6版本驱动模块编译时,必须为驱动程序编写一个Makefile,下面提供一个Makefile模板。当驱动程序名称不同的时候,只需要把obj-m后面的目标文件名称改成相应的即可(如驱动代码为led8n.c即改为led8n)。

obj-m    :=demo.o

CROSS_COMPILE    =arm-linux-

CC       = $(CROSS_COMPILE)gcc

#CC      = gcc

KDIR      :=/work/kernel/linux-2.6.24

#KDIR    :=/lib/modules/2.6.21-1.3194.fc7/build

PWD  :=$(shell pwd)

default:

$(MAKE) –C $(KDIR) SUBDIRS=$(PWD) modules

clean:

rm -rf *.o* *~ core .depend .*.cmd *.ko *.mod.c

rm -rf .tmp_versions/

 

注解:

n   obj-m指定最终生成驱动程序ko文件的名称。

n   CROSS_COMPILE指定交叉编译器名称,当驱动在arm平台使用时,不需要注释掉,如果驱动需要在x86平台使用,使用#注释掉即可。

n   KDIR指定内核源码树的路径,此时需要了解你的目标平台所使用的Linux内核版本号,将其指定到内核源代码树的位置;而且必须保证内核源代码树arch/boot下面存在已经编译成功的zImage内核文件。

n   defaultclean后面是指定在终端执行make make clean时所要执行的命令行。需要注意的是$(MAKE)rm –rf前面是一个TAB空格,而且是另起一行书写。

阅读(396) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~