如何使用 Buildroot 安装内核开发头文件以进行内核模块开发?

如何使用 Buildroot 安装内核开发头文件以进行内核模块开发?

我计划使用 BuildRoot 2015.08.1 进行一些 Rasperry Pi C/C++ 内核模块开发。

什么有效:

  • 我可以构建内核和 rootfs 并启动 Raspberry Pi。
  • 我可以使用 BuildRoot 工具链作为通用包或自动工具包来构建/重建“hello world”。

无效的方法:

  • 我无法包含某些内核头文件,例如 linux/module.h。工具链找不到这个头文件。

我查看了output/staging/usr/include。我可以找到一些linux头文件,例如linux/net.h。然而其他的不存在,例如 linux/module.h。

我正在寻找的标头存在于内核源代码树中。但是它似乎没有安装到暂存区。我不能 100% 确定 BuildRoot 调用了“make headers_install”,但这似乎是一个合理的假设。有人知道“make headers_install”如何选择要安装的标头吗?或者我还缺少其他东西吗?

答案1


我无法包含某些内核头文件,例如 linux/module.h。工具链找不到这个头文件。

内核模块:“make”命令具有“内部结构”来执行此操作。 (仅)当您使用特殊的»内核模块Makefile« → →

https://stackoverflow.com/questions/33589276/linux-kernel-module-compilation/33589361#33589361


答案2

这是内核模块的完全自动化的树外设置:https://github.com/cirosantilli/linux-kernel-module-cheat/blob/b89ba9b799480e4eb1975f0a704409efb7d667d1/kernel_module/external.mk

我已经在以下位置描述了它的最小版本:https://stackoverflow.com/questions/40307328/how-to-add-a-linux-kernel-driver-module-as-a-buildroot-package/43874273#43874273

包类型$(eval $(kernel-module))基本上为我们设置了一切。

相关内容