在实际工作中,通常出现SDk编译出来的驱动模块,在最小系统中加载失败,即insmod xxx.ko 失败,“disagree param with the version"等之类的提示。
1.分析内核版本, uname -a 一看,最小系统的内核版本和编译SDK的内核版本一样。(因为SDK编译出来就是一个驱动ko,以及在驱动的基础上做了一个适配库.so),所以SDK本质上就是一个内核模块驱动+适配层代码。自然在编译时是需要依赖内核的。纳闷了,内核版本一样,工具链也是一套的,编译出来的ko却加载失败。
2.通过分析编译最小系统的内核和编译SDK的内核,发现两个内核虽然版本一样,但两个内核配置不一样。即最小系统的内核代码在make menuconfig 对内核做了裁剪。问题有眉目了,可能是最小系统的内核做了裁剪,而SDK编译的内核没有同步更新,造成SDk编译的驱动在最小系统中找不到对应的依赖。
解决办法: