出现这个的问题主要是linux主机的内核版本和目标机的版本不一致,其实交叉编译是不会理会编译主机的内核版本的,但是还需要指定目标机的内核位置,如:
选取一个驱动的Makefile文件
obj-m := mchpar1xxx.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
gcc -o inputactivate inputactivate.c
gcc -o inputverify inputverify.c
clean:
rm -f *.o *.cmd *.mod.c .*.o* .*.ko* *~ *.ko inputactivate inputverify
rm -rf .tmp_versions/
其中的KDIR指的是内核目录,这里指向的是主机的/lib/modules/...文件夹,最后找到的是主机的3.11版本,修改KDIR
指定为目标机内核的目录:
KDIR := /home/program/I.MX53/kernel-source/linux-2.6.35.3
这样重新编译驱动,就可以正常加载了