加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-13 22:55:21 所属栏目:Linux 来源:网络整理
导读:我正在研究为ARM linux交叉编译内核模块.我安装了工具链. 但是我从各种各样的方法中得到了一些东西. 我想要构建的模块是gadgetfs. 我的主机上的内核版本是3.5.0-34-generic ?在目标上它是3.6.9-0.1 现在我实际需要下载和安装哪些内核源代码或头文件,以及在哪
我正在研究为ARM linux交叉编译内核模块.我安装了工具链.
但是我从各种各样的方法中得到了一些东西.
我想要构建的模块是gadgetfs.

我的主机上的内核版本是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_COMPILE和ARCH都已设置.

解决方法

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

在主机上提供目标构建后,您可以通过构建模块

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

在该模块的目录下.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读