在原生的linux环境中编译第三方驱动的资料比较多。只需要在驱动的makefile中指定交叉编译器和编译后内核的路径就可以开始编译了。具体可以参考linux驱动编译系统。
我不知道是安卓的原因还是变态的mtk不兼容原生驱动编译方式,导致花费了较长的时间去摸索如何编译驱动的问题。
在mtk8685SDK下,只能将原始驱动放入内核目录即mtkv1.33/kernel/drivers
目录下。makefile只需要用obj-y/obj-m申明编译目标和编译参数。在sdk根目录执行./mk n k kernel/drivers/net/wireless/DPO_RT5572_LinuxSTA_2.6.0.1_20120629
。若支持原生驱动编译的第三方驱动的宏或者源文件比较多,那么也只能根据内核驱动的方式重新改写makefile。
在编译时遇到如下错误:
/home/xiaojingling/work/mtkv1.33/kernel/drivers/net/wireless/DPO_RT5572_LinuxSTA_2.6.0.1_20120629/common/crypt_sha2.c:549:1: fatal error: opening dependency file drivers/net/wireless/DPO_RT5572_LinuxSTA_2.6.0.1_20120629/common/.crypt_sha2.o.d: No such file or directory
compilation terminated.
/home/xiaojingling/work/mtkv1.33/kernel/drivers/net/wireless/DPO_RT5572_LinuxSTA_2.6.0.1_20120629/common/crypt_hmac.c:277:1: fatal error: opening dependency file drivers/net/wireless/DPO_RT5572_LinuxSTA_2.6.0.1_20120629/common/.crypt_hmac.o.d: No such file or directory
没有写好依赖关系,导致编译出错!!!
编译进内核也需在makefile中写好依赖关系,参考linux驱动编译系统多文件目标编译。