insmod不匹配问题的解决

         第一次练习写模块,使用insmod安装模块时,发现内核版本不匹配,你可以baidu或者google下,有很多解决方案,但是我这种不匹配错误有点不太一样,不管我在开发板上uname -r查看运行linux内核版本,还是用modinfo来查看编译模块版本都是显示的3.0.8,很奇怪内核版本一样的的怎么还会报错呢。


/mnt/work # uname -r                                                            
3.0.8 


chen@chen:~/work/project/LinuxCross/my6410/nfs/work$ modinfo first_drv.ko
filename:       first_drv.ko
depends:        
vermagic:       3.0.8 mod_unload modversions ARMv6


再看insmod的错误提示

# insmod first_drv.ko                                                       
  insmod: kernel-module version mismatch                              
  first_drv.ko was compiled for kernel version                       
  while this kernel is version 3.0.8


我发现我的错误提示和别人的错误提示不一样,就是我的ko内核版本并没有显示出来 (for kernel version后面没有版本号),所以我就推测可能是insmod函数本身出了错误,因为yaffs2文件系统是我自己做的,所以我觉得busybox和glibc的不匹配的可能很大,为了证明这个猜测,我将glibc从2.3.5换成了2.8,重新制作yaffs2文件系统,烧写进去,启动,挂载nfs,再insmod ***.ko

ok,问题解决了!


最后为制作YAFFS2文件系统的朋友给个建议,就是编译busybox使用的交叉编译工具一定要和yaffs2的glibc版本匹配(就是lib目录的库),不然yaffs2起不来的!

你可能感兴趣的:(嵌入式ARM-Linux)