我试图为Beaglebone(Linux,ARM)交叉编译一个外部模块。为了避免内核版本问题,我抓取了一个内核tarball并为ARM编译在主机(x86)上使用CodeSourcery工具链。然后,我用完全相同的工具链针对完全相同的内核源码交叉编译外部hello-world模块。我用这个简单的makefile:交叉编译内核模块:如何设置配置权
obj-m += hello-1.o
all:
make -C /home/***/****/linux-3.2.0-beaglebone-20120411.00
M=$(PWD) modules
clean:
make -C /home/***/****/linux-3.2.0-beaglebone-20120411.00 M=$(PWD) clean
当我复制KO文件到目标,并试图用insmod我得到它:“insmod的:错误插入‘HELLO-1.ko’:-1无效的模块格式”这(从我这个组中的教训和其他地方)通常相互冲突的内核版本茎,目标确实UNAME -a可提供:
的Linux 3.2.18 beaglebone 1号周三14点21分54秒5月30日CEST 2012 armv7l GNU/Linux的
而modinfo命令HELLO-1.ko给出:
srcversion:140276773A3090F6F33891F 取决于:
vermagic:3.2.0+ mod_unload MODVERSIONS的ARMv5 p2v8
所以版本3.2.18与3.2.0+(为何+?)和armv7l VS 。ARMv5!
有谁知道为什么我得到不同的版本,尽管我编译的内核来源相同(可能是一些配置)?
任何建议表示赞赏!
最好, 克里斯