LIUNX驱动中内核模块与编译模块不匹配解决方案
上一篇 /
下一篇 2008-01-07 13:37:14
在写LINUX驱动中会出现内核模块和编译模块不匹配的问题 例如在REDHAT9.0 中有内核版本2.4.20-8
其实还是2.4.20的内核,后面的-8表示需要的补丁包号。如果不加载补丁,在编译驱动程序时,内核仍然会用2.4.20 去编译。也能够正常编译。但在加载驱动模块时,就不能正常加载。对于这种情况有几种解决方案
(1)指定编译的头文件 I/usr/src/linux-2.4.20-8/include
(2)强制性加载 inmod -f **.o
对于强制性加载会发出警告,但可以不理会他。
建议用第一种方案。
对第一种方案的Makefile 可以这样写。
CC = gcc
INCLUDEDIR= /usr/src/linux-2.4.20-8/include
CFLAGS = -D__KERNEL__ -D__MODULE -I/$(INCLUDEDIR)
ifdef CONPIG_SMP
CFLAGS += -D__SMP__ -DSMP
endif
EXEC = hello
OBJC= hello.o
SRC =hello.c
all : $(EXEC)
$(OBJC): $(SRC)
$(LD) -r $^ -o $@
clean:
rm -f *.o *~core
117-102 117-301 190-721 000-746
导入论坛
收藏
分享给好友
管理
举报
TAG: