4

背景

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

问题

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

解决方法 1

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

解决方法 2

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

问题

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

4

1 回答 1

1

由于标头提供了与内核内部无关的声明,因此您可以安全地从一个内核版本中获取标头,将其复制到您的包中,并将其用于针对任何内核版本进行构建。用户无需额外要求在他的机器上拥有此标头。

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


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

于 2016-06-03T13:18:58.747 回答