阅读:3207回复:4
linux 驱动 Makefile的问题我现在写一个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) 是不是有问题,或者这种写法根本不对,有没有可以参考的东东呀? |
|
沙发#
发布于:2004-09-13 13:48
编译还提示 undefined reference to `main' ,我写驱动不用main函数呀, 我怀疑我写的根本不对,那编译多个原文件的驱动的Makefile该怎么写呀
|
|
板凳#
发布于:2004-09-14 09:27
问题很明显么,-I/private/usr/src/kernel/include错了,编译内核模块时应该使用内核的源文件,内核源文件一般在/usr/src下面,不过具体和你使用的cpu有关
|
|
地板#
发布于:2008-03-30 10:57
Makefike 很关键
|
|
地下室#
发布于:2008-04-03 22:01
写的好乱
|
|