2014-01-07 61 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 

构建模块后。