2014-01-07 275 views
4

我正在研究交叉編譯ARM Linux的內核模塊。我有我的工具鏈安裝。 但是我從各種不同的方法中得不到什麼。 我想要建立的模塊是gadgetfs交叉編譯Linux內核模塊

我的主機上的內核版本是3.5.0-34-generic而 目標是3.6.9-0.1

現在是什麼內核源代碼或標題做我真正需要下載和安裝,以及在哪裏? 我從kernel.org下載linux-3.6.9.tar.bz2並提取它。 在drivers/usb/gadget/有一個Makefile並根據這個網站,我需要這些線路將其追加,然後運行make

KDIR := /lib/modules/`uname -r`/build 
PWD := `pwd` 
obj-m := dummy_hcd.o gadgetfs.o 
default: 
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules 

但我有什麼來取代uname -r?因爲這會給我我的主機的內核版本。但是我的目標版本不同。 /lib/modules/3.6.9文件夾在哪裏? CROSS_COMPILEARCH都被設置。

回答

3

由於Linux沒有stable binary API,您需要在主機上使用正確的配置爲您的目標交叉編譯(或下載預編譯的)Linux版本的匹配版本。主機的內核版本不相關。

有你的主機上的目標構建您可以在模塊的目錄下通過

make -C kernel_build_dir M=`pwd` ARCH=arm CROSS_COMPILE=<...> modules 

構建模塊後。