linux-kernel - 交叉编译 Linux 内核模块

标签 linux-kernel arm cross-compiling kernel-module

我正在研究为 ARM linux 交叉编译内核模块。我已经安装了我的工具链。
但是有些东西我并没有从各种方法中得到。
我要构建的模块是gadgetfs .

我主机上的内核版本是3.5.0-34-generic尽管
在目标上是3.6.9-0.1
现在我实际上需要下载和安装哪些内核源代码或头文件,在哪里?
我下载了linux-3.6.9.tar.bz2来自 kernel.org并将其提取出来。
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都设置好了。

最佳答案

由于 Linux 没有 stable binary API,因此您需要在主机上使用正确的配置为您的目标交叉编译(或下载预编译的)Linux 匹配版本。 .主机的内核版本不相关。

在您的主机上获得目标构建后,您可以通过以下方式构建模块

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

在该模块的目录下。

关于linux-kernel - 交叉编译 Linux 内核模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20969523/

相关文章:

linux - redis是否限制客户端数量为65K?

c - arm-none-eabi-gcc 是否支持#pragma pack(n)

C++ cmake & boost & arm 交叉编译

python - 有没有办法在 amd64 架构中安装 Python for ARM?

scala - 如何为多个 Scala 版本和差异依赖项组织代码

c - C中struct封装指针的目的

c - 为什么 last_rx 总是 0?

c++ - kernel.kallsyms 在 C++ 应用程序运行中的作用

python - 交叉编译python for arm时导入zlib错误

linux - 我想通过 minicom 使用 gdb 在 arm board 上调试 vmlinux。我需要做什么?