yezi_wyf
驱动牛犊
驱动牛犊
  • 注册日期2004-04-20
  • 最后登录2009-05-25
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望30点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3056回复:4

linux 驱动 Makefile的问题

楼主#
更多 发布于:2004-09-13 13:08

    我现在写一个IC卡的驱动,遇到一个问题,我的Makefile文件如下:
PATH=/opt/host/armv4l/bin:$PATH
CC=armv4l-linux-gcc

MODCFLAGS:=-O2 -Wall -DMODULE -D__KERNEL__ -DLINUX -I/private/usr/src/kernel/include
HEAD = 2410addr.h CardFoun.h ShareDef.h Option.h
SRC = Card_Command.c IC_init.c check_k.c DelayFun.c Init_Card.c read.c read_k.c S44_Base.c Sel44xx.c update_k.c write.c
LIB = Card_Command.o IC_init.o check_k.o DelayFun.o Init_Card.o read.o read_k.o S44_Base.o Sel44xx.o update_k.o write.o

all: IC.o
IC_init.o: ${SRC} ${HEAD}
 $(CC) $(MODCFLAGS) -c IC_init.c
Card_Command.o: ${SRC} ${HEAD}
 $(CC) $(MODCFLAGS) -c Card_Command.c  
check_k.o: ${SRC} ${HEAD}
 $(CC) $(MODCFLAGS) -c check_k.c
DelayFun.o: ${SRC} ${HEAD}
 $(CC) $(MODCFLAGS) -c DelayFun.c
Init_Card.o: ${SRC} ${HEAD}
 $(CC) $(MODCFLAGS) -c Init_Card.c
read.o: ${SRC} ${HEAD}
 $(CC) $(MODCFLAGS) -c read.c
read_k.o: ${SRC} ${HEAD}
 $(CC) $(MODCFLAGS) -c read_k.c
S44_Base.o: ${SRC} ${HEAD}
 $(CC) $(MODCFLAGS) -c S44_Base.c
Sel44xx.o: ${SRC} ${HEAD}
 $(CC) $(MODCFLAGS) -c Sel44xx.c
update_k.o: ${SRC} ${HEAD}
 $(CC) $(MODCFLAGS) -c update_k.c
write.o: ${SRC} ${HEAD}
 $(CC) $(MODCFLAGS) -c write.c    

IC.o : $(LIB)
 $(CC) $(MODCFLAGS) -o IC $(LIB)

clean:
 rm -rf *.o *~ core


执行到(CC) $(MODCFLAGS) -o IC $(LIB),提示printk ,register_dev等与内核相关的函数没有定义,只有一个源文件的Makefile
PATH=/opt/host/armv4l/bin:$PATH
CC=armv4l-linux-gcc
MODCFLAGS:=-O2 -Wall -DMODULE -D__KERNEL__ -DLINUX -I /private/usr/src/kernel/include
IC.o:IC.c /opt/host/armv4l/src/linux/include/linux/version.h
  $CC) $(MODCFLAGS) -c IC.c


执行没有问题,对有多个源文件的驱动,
IC.o : $(LIB)
 $(CC) $(MODCFLAGS) -o IC $(LIB)
是不是有问题,或者这种写法根本不对,有没有可以参考的东东呀?
yezi_wyf
驱动牛犊
驱动牛犊
  • 注册日期2004-04-20
  • 最后登录2009-05-25
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望30点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-09-13 13:48
编译还提示 undefined reference to `main' ,我写驱动不用main函数呀, 我怀疑我写的根本不对,那编译多个原文件的驱动的Makefile该怎么写呀
vikingpro79
驱动牛犊
驱动牛犊
  • 注册日期2004-09-01
  • 最后登录2006-05-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-09-14 09:27
问题很明显么,-I/private/usr/src/kernel/include错了,编译内核模块时应该使用内核的源文件,内核源文件一般在/usr/src下面,不过具体和你使用的cpu有关
xaxiao
驱动小牛
驱动小牛
  • 注册日期2007-09-11
  • 最后登录2010-02-10
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望199点
  • 贡献值0点
  • 好评度197点
  • 原创分2分
  • 专家分0分
地板#
发布于:2008-03-30 10:57
Makefike 很关键
xaxiao
驱动小牛
驱动小牛
  • 注册日期2007-09-11
  • 最后登录2010-02-10
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望199点
  • 贡献值0点
  • 好评度197点
  • 原创分2分
  • 专家分0分
地下室#
发布于:2008-04-03 22:01
写的好乱
游客

返回顶部