我試圖爲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!
有誰知道爲什麼我得到不同的版本,儘管我編譯的內核來源相同(可能是一些配置)?
任何建議表示讚賞!
最好, 克里斯