Chinaunix首页 | 论坛 | 博客
  • 博客访问: 524983
  • 博文数量: 122
  • 博客积分: 2024
  • 博客等级: 上尉
  • 技术积分: 1484
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-08 21:17
文章分类

全部博文(122)

文章存档

2012年(2)

2011年(25)

2010年(95)

分类: LINUX

2010-03-28 22:36:45

先从网上粘个,有空了好好看看kconfig和Makefile

2.6内核中编译外部模块的Makefile模板很多,但找到的几乎都是PC上的
记录一下方便以后再找

obj-m+=modulename.o
KDIR := /lib/modules/2.6.29.4-FriendlyARM/build/
PWD:= $(shell pwd)
CROSS_ARCH := ARCH=arm CROSS_COMPILE=arm-linux-
ARCH =arm
CROSS_COMPILE =arm-linux-
default:
$(MAKE) $(CROSS_ARCH) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
rm -rf *.cmd *.o *.mod.c

第一行

虽然要编译的是.ko,但是这里还是要写obj-m+=modulename.o ,不然就报什么Makefile.build xxx目标不匹配什么的
这里仅仅编译了一个文件modulename.c
要有多个文件,再加
module-objs:=test1.o test2.o

第二行
KDIR ,指的是目标板上的源码目录
因为要烧到目标板上,所以编译内核时几乎所有的模块都是直接编译进去的,不是以外部模块形式存在的
不然一堆零件散在外面累死人
这样的话,一个make就够了
但是为了方便写Makefile,还是顺手make modules;make modules_install;一下,这样顺手就在
/lib/modulse/下生成了对应的moudules和头文件,如这个Makefile的KDIR不是直接的源码目录,而是
make modules;make modules_install;后生成的

即使这样,modulename.c里include 的头文件还不是KDIR里的,
我Makefile学的烂,不知道怎么改好,只有写成绝对路径了

改了一上午,终于把一个驱动满屏的错误改到两行了,
干这行真得需要一个有力的心脏,不然会抓狂致死

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