使用modinfo chrdevbase.ko 查看chrdevbase.ko 文件的信息和 uname -a 查看kernel的软件版本是保持一致的。
但是加载 chrdevbase.ko 驱动文件 会一直报错chrdevbase: unknown relocation:3
关于chrdevbase: unknown relocation:3的问题,搞了好久,网上各种说明内核不一致的问题,各种方法都试了,死活就是不可以,后面突然想到是不是当初安装arm-linux-gnueabihf-gcc 的时候是不是出现问题了,
经过排查发现arm-linux-gnueabihf-gcc的版本是 gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
实际上该版本是错误的,应该是以下的版本:应该和原子哥的版本保持一致才可以。
gcc 版本 4.9.4 (Linaro GCC 4.9-2017.01)
下面分享怎么进行修改:
首先卸载 lsb-core 和 lib32stdc++6
sudo apt-get remove lsb-core lib32stdc++6
然后(检查最大的版本即可)
which arm-linux-gnueabihf-gcc-7
然后
rm -rf arm-linux-gnueabihf-gcc*
后面再次安装lsb-core 和 lib32stdc++6
sudo apt-get install lsb-core lib32stdc++6
最好重启以下电脑 reboot
然后按照流程检查以下gcc的版本
arm-linux-gnueabihf-gcc -v
得到
![](https://img-blog.csdnimg.cn/direct/f7944aaf2e9849fda4902af0706027ab.png)
此时后面需要重新进行编译一下kernel和chrdevbase模块
然后将
imx6ull-alientek-emmc.dtb 和 zImage 放置到,你们个人设置的tftp的路径文件夹下
同理:chrdevbase.ko放置到对应的nfs路径下的 /lib/modules/4.1.15 chrdevbase.ko
后面重新上电开发板子,得到:
![](https://img-blog.csdnimg.cn/direct/4a35209681424efd9e06f79f007662cd.png)
此时注册chrdevbase.ko成功!