【问题标题】:How do I specify header files for make headers_install in an out-of-tree kernel module?如何在树外内核模块中为 make headers_install 指定头文件?
【发布时间】:2015-08-06 22:33:00
【问题描述】:

我在 kbuild modules 文档中找不到与此相关的任何信息,而在 headers_install 文档中只有一个倾斜的参考(表明这是可能的)。

“make headers_install”命令可以在顶层目录运行 内核源代码(或使用标准的树外构建)。

我有一个带有关联头文件的树外内核模块(我有用于 IOCTL 的#defines),并且我想提供该头文件作为模块安装的一部分。内核模块提供头文件(供用户空间使用)的树内方式似乎是将它们放在 include/linux/ 中。我需要做些什么才能让它在树外工作?

【问题讨论】:

    标签: linux-kernel kernel-module


    【解决方案1】:

    好的,这似乎是我没有阅读所有手册的另一种情况...所需的手册是 kbuild 的makefiles 文档...

    内核包含一组导出到用户空间的头文件。 许多标头可以按原样导出,但其他标头需要 在为用户空间做好准备之前进行最少的预处理。 预处理:

    • 删除内核特定的注释
    • 删除 compiler.h 的包含
    • 删除所有内核内部部分(由 ifdef KERNEL 保护)

    每个相关目录都包含一个文件名“Kbuild”,它指定了 要导出的标头。 Kbuild 文件的语法见后续章节。

    --- 7.1 标头-y

    header-y 指定要导出的头文件。

      Example:
            #include/linux/Kbuild
            header-y += usb/
            header-y += aio_abi.h
    

    【讨论】:

    • 当内核内部头被拆分为 UAPI 和内部使用时,它已经完成了。
    猜你喜欢
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 2014-04-17
    • 1970-01-01
    • 2021-06-14
    • 2020-07-01
    • 2016-05-02
    • 2017-06-19
    相关资源
    最近更新 更多