我在kbuild modules文档中找不到有关此内容的任何信息,并且在headers_install文档中只提供了一个倾斜的引用(建议可行)。
“make headers_install”命令可以在。的顶级目录中运行 内核源代码(或使用标准的树外构建)。
我有一个带有关联头文件的树外内核模块(我有一个IOCTL的#defines),我想提供该头文件作为模块安装的一部分。看起来内核模块提供头文件(用于用户空间)的树内方式是将它们放在include / linux /中。我需要做些什么才能在树外工作?
答案 0 :(得分:0)
好的,这似乎是另一个我没有阅读所有手册的案例......需要的手册是kbuild的makefiles文档......
内核包含一组导出到用户空间的标头。 许多标题可以按原样导出,但其他标题需要 在为用户空间做好准备之前进行最少的预处理。 预处理确实:
- 删除内核特定的注释
- drop included of compiler.h
- 删除内核内部的所有部分(由ifdef KERNEL 保护)
每个相关目录都包含一个文件名" Kbuild"它指定了 要导出的标头。 有关Kbuild文件的语法,请参阅后续章节。
--- 7.1 header-y
header-y指定要导出的头文件。
Example: #include/linux/Kbuild header-y += usb/ header-y += aio_abi.h