关于Linux驱动编写时,版本匹配问题的一点经验

         我用RedHat9开始驱动编程联系的,由于在/usr/src 和 /usr/local/src/ 都没有Linux源码,所以自己下了个2.4.20的包解压到了这两个地方(以用来操作,一个做备份吧)。解压完后,刚开始不能执行 “make menuconfig” 命令,在提示下执行了“make config” 命令,接着执行了 “make modules ” 和 “make modules_install"命令。终于把源码包配置完毕。

          接着回到我的驱动测试目录,执行了”[root@localhost drivers]# gcc  -D__KERNEL__  -DMODULE  -DLINUX -I /usr/local/src/linux-2.4.20/include -c -o test001.o test001.c “ 命令来编译驱动,然后执行了命令”[root@localhost drivers]# insmod ./test001.o”并且出现了如下提示:“./test001.o: kernel-module version mismatch        ./test001.o was compiled for kernel version 2.4.20             while this kernel is version 2.4.20-8.“。很明显,驱动编译成功,由于版本不配而安装失败。又回到,内核源码目录下修改Makefile 文件,添加了如下红色所示的-8

VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 20
EXTRAVERSION = -8

接着,又执行  “make modules ” 和 “make modules_install"命令,最后又执行了”[root@localhost drivers]# gcc  -D__KERNEL__  -DMODULE  -DLINUX -I /usr/local/src/linux-2.4.20/include -c -o test001.o test001.c  “  命令 和”[root@localhost drivers]# insmod ./test001.o”命令。

   

 

           O(∩_∩)O~,到此为止,驱动安装完毕!

 

 

你可能感兴趣的:(编程,linux,redhat,gcc,测试,makefile)