为什么尝试构建内核模块会给出“-1 未知符号”错误?

为什么尝试构建内核模块会给出“-1 未知符号”错误?

我最近购买了适用于 Windows 的 Kinect,很快发现 Linux 内核 3.0+ 中包含的摄像头驱动程序与适用于 Windows 的 Kinect 硬件版本不兼容。查看源代码后,似乎只需进行微小修改即可实现兼容性,因此我一直尝试重新编译驱动程序 - 但无济于事。

我一直在提到本文这个也,尽管它们有点过时了。

当我尝试编译模块时,出现错误,因为在包含路径中找不到头文件“gspca.h”。我在文件系统中找到了丢失的头文件,但文件本身是空的。我还尝试下载内核源代码(3.2.0-24-generic),这允许我编译模块,但当我加载模块时出现错误。

-1 Unknown symbol in module

有没有一种标准方法可以解决这个问题,而无需先构建内核?构建内核是否可以确保我可以构建模块?

谢谢

答案1

有没有一种标准方法可以解决这个问题,而无需先构建内核?构建内核是否可以确保我可以构建模块?

  • 如果你收到该错误,。您可以强制加载模块,它很可能会起作用,但您将无法调试它,因此不建议使用此方法。

  • 发生该错误的原因是您缺少module.symvers模块符号数据库。

  • 仅有的生成该文件的正确方法是执行内核的完整构建——这将要让您构建模块。
  • 请非常小心地将内核配置为严格按照库存规格,除非您打算安装并运行构建的内核。

相关内容