linux headers 中的 asm vs asm-generic——它们相同吗
asm vs asm-generic in linux headers -- are they same
在我的 linux header 文件夹中,我的 Kali 内核 5.7.0 headers 包含在包含目录 /usr/src/linux-headers-5.7.0-kali1-common/include 中。在此文件夹中,我有 sub-folders 中包含的 header 文件,如 asm-generic、linux、uapi、acpi、crypto 等。但在 header 文件中,即在 linux/module.h 中有一个 header 文件引用,如
#include <asm/module.h> // top of linux/module.h
但实际上我的 header 文件中没有安装 asm 文件夹。
所以想到的一种解决方案是。可能的解决方案:将引用从 asm/* 更改为 asm-generic/*,如从 asm/module.h 到 asm-generic/module.h 在 linux/module.h 和我可能的其他文件中利用。我想知道 asm 和 asm-generic 是否相同?意思是它们包含相同的文件和结构,或者有什么不同我会导致问题
如果我更正包含引用中的目录名称是否有意义,或者如果我更改 header 的包含列表中的子目录名称,编译模块时会遇到问题 header 文件从 asm 到 asm-generic?如果我不这样做,header 文件将会丢失
简答
它们不一样。
内核开发人员可能会在 asm header 中包含 asm-generic header,而 asm header 是内核模块所需的 header。
您可以通过关注post
获得更多信息
- in linux kernel, asm or asm-generic?
- Linux kernel headers' organization
- linux module compilng missed folder asm
换个角度看这个问题。
看来您正在尝试制作内核模块。
要构建内核模块,您需要 kernel-headers 或已编译的内核源代码。但是我不知道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 可能需要更多操作。发现 this post 可能有帮助。
自己构建
- 检查 linux 所需发行版的内核代码。
- 使用
make menuconfig
设置内核配置(您可能会在这里迷迷糊糊.. 可能需要很多包)
- 使用
make modules_prepare
编译内核以编译必要的 Module.symvers 驱动程序。它比编译一个完整的内核花费的时间要少得多。
我想您已经找到了内核模块构建示例。如果没有,你可以参考官方内核模块documentation。如果您花点时间阅读前两章,将会有很大帮助。
或另一个example
在我的 linux header 文件夹中,我的 Kali 内核 5.7.0 headers 包含在包含目录 /usr/src/linux-headers-5.7.0-kali1-common/include 中。在此文件夹中,我有 sub-folders 中包含的 header 文件,如 asm-generic、linux、uapi、acpi、crypto 等。但在 header 文件中,即在 linux/module.h 中有一个 header 文件引用,如
#include <asm/module.h> // top of linux/module.h
但实际上我的 header 文件中没有安装 asm 文件夹。 所以想到的一种解决方案是。可能的解决方案:将引用从 asm/* 更改为 asm-generic/*,如从 asm/module.h 到 asm-generic/module.h 在 linux/module.h 和我可能的其他文件中利用。我想知道 asm 和 asm-generic 是否相同?意思是它们包含相同的文件和结构,或者有什么不同我会导致问题
如果我更正包含引用中的目录名称是否有意义,或者如果我更改 header 的包含列表中的子目录名称,编译模块时会遇到问题 header 文件从 asm 到 asm-generic?如果我不这样做,header 文件将会丢失
简答
它们不一样。
内核开发人员可能会在 asm header 中包含 asm-generic header,而 asm header 是内核模块所需的 header。
您可以通过关注post
获得更多信息- in linux kernel, asm or asm-generic?
- Linux kernel headers' organization
- linux module compilng missed folder asm
换个角度看这个问题。
看来您正在尝试制作内核模块。
要构建内核模块,您需要 kernel-headers 或已编译的内核源代码。但是我不知道kali linux,所以我只是在这里提供一般性的建议。
从哪里得到它们
一些发行版,如 Ubuntu,已经预构建 linux-headers。
- 例如:Ubuntu
/usr/src/linux-headers-$(uname -r)/include
- 例如:Ubuntu
通过
下载sudo apt-get install linux-headers-$(uname -r)
- 看来 kali linux 2.0 可能需要更多操作。发现 this post 可能有帮助。
自己构建
- 检查 linux 所需发行版的内核代码。
- 使用
make menuconfig
设置内核配置(您可能会在这里迷迷糊糊.. 可能需要很多包) - 使用
make modules_prepare
编译内核以编译必要的 Module.symvers 驱动程序。它比编译一个完整的内核花费的时间要少得多。
我想您已经找到了内核模块构建示例。如果没有,你可以参考官方内核模块documentation。如果您花点时间阅读前两章,将会有很大帮助。
或另一个example