压缩模块时,armv7l的模块makefile失败

点对点

我已经使用netfilter编写了一个网络挂钩。这个模块可以在我的ubuntu 16.04上成功编译。

现在,我想在嵌入式板中编译它,该板使用定制的Linux,并在笔记本电脑中使用相同版本的内核。唯一的问题是我的嵌入式板上的所有模块都是.ko.xz格式化的,我的makefile失败了,我不知道如何解决该问题。

我的原始makefile是:

obj-m += sysfirewall.o
all:
    make -C  /lib/modules/$(shell uname -r)/build -I/usr/Include/ M=$(PWD) modules
clean:
    make -C /lib/modules/$(shell uname -r)/build -I/usr/Include/ M=$(PWD) clean

但这失败了,因为我在嵌入式Linux中找不到任何构建文件夹。除了构建文件夹,还有一个内核文件夹,我将其替换为内核。

现在我的makefile是:

obj-m += sysfirewall.o
all:
    make -C  /lib/modules/$(shell uname -r)/kernel -I/usr/Include/ M=$(PWD) modules
clean:
    make -C /lib/modules/$(shell uname -r)/kernel -I/usr/Include/ M=$(PWD) clean

但是,当我在当前目录中运行make时,会出现以下错误:

$ make -C  /lib/modules/4.14.49-ti-r54/kernel -I/usr/Include/ M=/home/parsa/firewall/ modules
make[1]: Entering directory '/lib/modules/4.14.49-ti-r54/kernel'
make[1]: *** No rule to make target 'modules'.  Stop.
make[1]: Leaving directory '/lib/modules/4.14.49-ti-r54/kernel'9-ti-r54/uname -i 
Makefile:3: recipe for target 'all' failed
make: *** [all] Error 2

我怎么解决这个问题?我应该解压缩内核中的所有模块吗?确实是压缩的Linux内核模块的问题,还是该错误显示了其他内容?

PS:我不想交叉编译笔记本电脑中的模块。

编辑:我注意到“ / lib / modules / $(shell uname -r)/ kernel”文件夹中应该有一个Makefile,它不在我的嵌入式开发板上。我在笔记本电脑的“ / lib / modules / $(shell uname -r)/ build”文件夹中跟踪了Make文件,并意识到它是到/usr/src/linux-headers-4.4.0-128/Makefile的软链接。但是我的嵌入式开发板的/ usr / src中没有任何内容。所以我想我必须找到一个make文件来编译这个模块,我不知道怎么做!

电信

问题不在于压缩,而在于make找不到正确的文件。请注意,make命令进入/lib/modules/<kernel version>/kernel目录,然后才报告错误。因此,它在那里找不到所需的任何东西。

你不能代替/lib/modules/<kernel version>/kernel/lib/modules/<kernel version>/build:它们的内容是不同的。kernel目录包含该特定内核版本随附的已编译模块。这根本对make命令没有帮助:它需要makefile和.h内核源代码随附的文件。其中一些是作为主内核编译的一部分动态生成的。

通常,/lib/modules/<kernel version>/build是一个符号链接,指向与该特定内核版本关联的内核头文件所在的位置。如果您的嵌入式开发板使用的是以“ Debian方式”编译的内核(即make bindeb-pkg内核源目录中具有或相似的内核),则内核编译过程应该已经产生了许多.deb软件包:

  • linux-image-<version>_<patchversion>_<architecture>.deb =实际的已编译内核及其模块
  • linux-headers-<version>_<patchversion>_<architecture>.deb =您需要为该特定内核编译更多内核模块的头文件

在这种情况下,您只需要找到并安装与linux-headers您在ARM板上使用的确切内核版本相对应软件包。它将自动/lib/modules/<kernel version>/build为您提供链接。

如果您已经用传统的make bzimage或类似的代码编译了自己的自定义内核,则必须/lib/modules/<kernel version>/build自己提供链接。如果您仍然有实际的内核构建目录,只需将其链接到/lib/modules/<kernel version>/build

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

strptime()在armv7l环境下产生错误结果

来自分类Dev

插入模块时模块验证失败

来自分类Dev

为什么在32位armv7l上成功映射4GB文件?

来自分类Dev

我应为armv7l使用哪种RPM软件包

来自分类Dev

ARMv7l imx6单独SD板的工具链

来自分类Dev

如何在armv7l上执行二进制类型的Mach-O?

来自分类Dev

为什么在32位armv7l上成功映射4GB文件?

来自分类Dev

在ARM(armv7l / arm64 / aarch64)上构建mongo shell 3.2.x-分段错误

来自分类Dev

尝试导入模块时故意使其失败

来自分类Dev

在Windows 7上为phantomjs安装“弱”模块时,node-gyp重建失败

来自分类Dev

在Windows 7上为phantomjs安装“弱”模块时,node-gyp重建失败

来自分类Dev

请求模块和压缩

来自分类Dev

解压缩时Python zlib模块错误?

来自分类Dev

使用Regsvr32在Windows 7上注册DLL时出现错误“模块XYZ.dll加载失败”

来自分类Dev

导入python模块失败

来自分类Dev

Linux模块验证失败

来自分类Dev

Ansible复制模块失败

来自分类Dev

反应-模块解析失败

来自分类Dev

Webpack:模块解析失败

来自分类Dev

Perl模块::加载失败

来自分类Dev

ngRoute模块加载失败

来自分类Dev

测试HttpStatusCode时,使用nUnit测试Nancy模块失败断言

来自分类Dev

安装github子模块时,诗歌安装失败并显示[CalledProcessError]

来自分类Dev

当主机不可访问时,跳过跳过失败模块

来自分类Dev

当类名以模块名为前缀时继承失败

来自分类Dev

PyImport_Import在python模块中导入子模块时失败

来自分类Dev

编译依赖于多个模块的模块时,Maven Jaxb生成失败

来自分类Dev

Makefile不会卸载冲突模块

来自分类Dev

基本内核模块的Makefile

Related 相关文章

热门标签

归档