gpt4 book ai didi

为内核模块创建 DKMS 包,依赖于内核头文件

转载 作者:太空狗 更新时间:2023-10-29 15:40:13 27 4
gpt4 key购买 nike

背景

我开发了一个 Linux 设备驱动程序 (ASoC)。现在我想将它作为 DKMS 包发布。目标机器是带有 Raspbian 的 Raspberry Pi。

问题

我的源代码依赖于 Linux /sound/soc/codecs/ 目录中的头文件。该文件在目标机器上不存在。

解决方法 1

我可以将所需的头文件添加到我的 DKMS 包中。但这感觉不对,因为我认为我应该使用模块构建所针对的内核源代码中的头文件(例如 4.6、4.7 ...)。

解决方法 2

我可以告诉最终用户在构建模块之前下载整个内核源代码(apt-get source ...)。但是仅仅因为一个头文件而安装超过 700MB 也感觉不对。 kernel-headers- 包不包含我需要的文件。

问题

是否有比这两种解决方法更好的解决方案?你有什么建议?

最佳答案

由于 header 提供声明,与内核内部结构不相关,您可以安全地从一个内核版本中获取 header ,将其复制到您的包中并使用它用于针对任何内核版本构建。用户无需额外要求在其机器上安装此 header 。

当然,最好保留此 header 的属性,但由于您使用 DKMS,您的项目可能与 Linux 内核的许可证 (GPL) 兼容。


另一种方法 - 使用您为其构建的内核中的 header - 从用户的角度来看更为复杂。所以只有在真正需要的时候才应该使用它。例如,当问题的标题描述了一些您在模块中使用的内核内部结构时。在那种情况下,您不能对所有目标内核使用单个(预复制)文件。

关于为内核模块创建 DKMS 包,依赖于内核头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37600792/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com