2012-07-19 80 views
1

我試圖爲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!

有誰知道爲什麼我得到不同的版本,儘管我編譯的內核來源相同(可能是一些配置)?

任何建議表示讚賞!

最好, 克里斯

回答

1

答案是,你應該運行「你的Beagle Board編譯內核。

「+」表示您修改了源樹。

最後確保您使用的是正確的defconfig。 'make beagle_defconfig'應該可以工作。