asm与asm-linux头文件中的通用--它们是一样的吗

ac1kyiln  于 2023-06-05  发布在  Linux
关注(0)|答案(2)|浏览(182)

在我的Linux头文件文件夹中,我的Kali kernal 5.7.0头文件包含在include目录/usr/src/linux-headers-5.7.0-kali 1-common/include中。在这个文件夹中,我有一些头文件,包含在像asm-generic,linux,uapi,acpi,crypto等子文件夹中。但在头文件中,即在linux/module.h中包含一个头文件引用,如

#include <asm/module.h>  // top of linux/module.h

但实际上我没有asm文件夹,当我安装它们时,它包含在我的头文件中。所以我想到的一个解决方案是。可能的解决方案:将引用从asm/* 更改为asm-generic/*,如从asm/module.h更改为linux/module.h中的asm-generic/module.h以及我可能使用的其他文件。我想知道asm和asm-generic是一样的吗?这意味着它们包含相同的文件和结构,或者有任何差异,我可以导致问题
如果我更正了include reference中的目录名,而不是如果我将include list of header files中的header子目录名从asm更改为asm-generic,那么这是否有意义,或者在编译模块时会遇到问题?如果我不这样做的头文件将丢失

pkln4tw6

pkln4tw61#

简短回答

它们不一样。
内核开发者可以在ASM报头中包括ASM通用报头,而ASM报头是内核模块所需的报头。
你可以从下面的帖子中获得更多信息

换个Angular 来看待这个问题。

看起来你正在尝试创建一个内核模块。
要构建内核模块,您需要内核头文件或编译的内核源代码。但是我不知道kali linux,所以我只是在这里提供一般性的建议。

去哪里拿

  • 一些发行版,如Ubuntu,有预构建的Linux头文件。
  • 例如:Ubuntu在/usr/src/linux-headers-$(uname -r)/include中有它
  • 下载sudo apt-get install linux-headers-$(uname -r)
  • 看起来kali linux 2.0可能需要更多的操作。this post可能会有帮助。

1.你自己造
1.检查你想要的发行版的linux内核代码。
1.使用make menuconfig设置内核配置(您可能会在这里遇到一段时间..可能需要多个包)
1.用make modules_prepare编译内核,为驱动程序编译基本的Module.symvers。它比编译一个完整内核花费的时间要少得多。
我假设您已经找到了一个内核模块构建示例。如果没有,可以参考官方的内核模块documentation。如果你花点时间读前两章会有很大帮助。
或另一个example

jyztefdp

jyztefdp2#

我发现我的asm目录在

/usr/src/{headers}/{kernel}/arch/{myArch}/include/asm

和/或

/usr/include/{myarch}/asm

你也可以在那里找到(我希望)。

相关问题