内核编译,驱动编译

今天刚刚把内核编译好,然后编译和安装了内核模块,然后编译了驱动,驱动的makefile中KERNELDIR=/lib/modules/2.6.38/build,可以编译成功,只是将ko文件下到板子中,insmod xx.ko时,出错

xx   version magic '2.6.38 mod_unload modversion armv5' should be '2.6.38-FriendlyARM mod_unload ARMv6 '

insmod: cannot insert 'xx.ko': invalid module format'  

之前知道,编译驱动用的内核源代码的版本必须跟开发板中系统的版本一致,我确实也是一致的,都是2.6.38,但还是出错。

经一友的帮助,是内核配置的问题,用他已经配置好的config文件,拷到linux-2.6.38的根目录下作为.config,然后make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-,结果我试了一下,将驱动makefile中KERNELDIR的目录为/home/student/tiny6410/linux-2.6.38,结果竟然正确了。之前我自己配置的时候,编译完内核,这样编译驱动是错误的,所以我才编译与安装的内核模块,以为只有安装了内核模块,然后修改驱动makefile中的依赖的内核目录才行,看来还是内核配置的问题。

然后我重新编译驱动之后,下载ko文件到板子,insmod后,依旧出现上述同样的错误。

我就想:这次应该就不是内核配置的问题了吧。便想到刚才无意间,我将config文件通过samba拷到linux中时,发现不能拷到linux-2.6.38目录中,而其他的目录都可以拷进去,于是想到是不是权限的问题,查看了一下linux-2.6.38的权限,是drwxr-xr-x,于是我就抱着试试的想法,修改了它的权限:chmod 777 linux-2.6.38,结果却  成   功    了 !!!

现在终于可以正常地insmod与rmmod了,这次才可以放心地进行下一步了呢!!

总结一下错因:

1、内核配置有问题。驱动的makefile,可以像以前一样,只需要linux-2.6.38的目录即可。

2、文件夹linux-2.6.38的权限问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值