linux 头文件中的 asm 与 asm-generic —— 它们相同吗

问题描述 投票:0回答:2

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

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

但实际上,当我安装头文件时,我没有包含在头文件中的 asm 文件夹。 所以想到的一个解决方案是。可能的解决方案:将引用从 asm/* 更改为 asm-generic/* ,如在 linux/module.h 和我可能使用的其他文件中从 asm/module.h 更改为 asm-generic/module.h 。我想知道 asm 和 asm-generic 是否相同?意味着它们包含相同的文件和结构,或者有什么差异我可能会导致问题

如果我更正包含引用中的目录名称是否有意义,或者如果我将包含头文件列表中的头子目录名称从 asm 更改为 asm-generic,那么在编译模块时我会遇到问题吗?如果我不这样做,头文件将会丢失

linux linux-kernel driver header-files kali-linux
2个回答
2
投票

简短回答

它们不一样。

内核开发人员可能会在 asm 标头中包含 asm 通用标头,而 asm 标头是内核模块所需的标头。

您可以从以下帖子获得更多信息

换个方式回答这个问题。

看来你正在尝试制作一个内核模块。

要构建内核模块,您需要内核头文件或编译后的内核源代码。不过我不了解kali linux,所以我只是在这里提供一般性建议。

哪里可以买到

  • 一些发行版,例如 Ubuntu,已经预先构建了 linux-headers。

    • 例如:Ubuntu 有它在
      /usr/src/linux-headers-$(uname -r)/include
  • 通过

    sudo apt-get install linux-headers-$(uname -r)

    下载
    • 看来kali linux 2.0可能需要更多的操作。发现这篇文章可能有帮助。
  • 自己构建

    1. 查看您想要的发行版的 Linux 内核代码。
    2. 使用
      make menuconfig
      设置内核配置(您可能会在这里迷惑一段时间..可能需要许多软件包)
    3. 使用
      make modules_prepare
      编译内核来编译驱动程序必需的Module.symvers。与编译完整内核相比,它花费的时间要少得多。

我想您已经找到了内核模块构建示例。如果没有,您可以查阅官方内核模块文档。如果您花一些时间阅读前两章,将会有很大帮助。

或者另一个例子


1
投票

我在

找到了我的asm目录
/usr/src/{headers}/arch/{myArch}/include/asm

/usr/include/{myarch}/asm

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

© www.soinside.com 2019 - 2024. All rights reserved.