我计划使用 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))
基本上为我们设置了一切。