我创建了一个小型 usbtest 驱动程序来测试我的 USB 设备。我有 3.2.0 和 ubuntu 12.04 的 linux 内核版本。
我可以很好地在我的 PC 上成功加载该驱动程序而不会出现任何问题,并且我可以使用该加载的驱动程序而不会出现任何故障情况。
我的 Linux PC 信息 :: uname -a Linux ci5lub021305 3.2.0-29-generic-pae #46-Ubuntu SMP Fri Jul 27 17:25:43 UTC 2012 i686 i686 i386 GNU/Linux 的输出
驱动程序加载失败的另一台 PC 的 Linux PC 信息 :: uname -a Linux ci5lub021302 3.2.0-51-generic-pae #77-Ubuntu SMP Wed Jul 24 20:40:32 UTC 2013 i686 i686 i386 GNU/Linux
但是,当我尝试将该驱动程序加载到另一个具有不同内核版本的 Linux 平台时,那时它会在加载该驱动程序时跟随它。
insmod:插入“usbtest.ko”时出错:-1 模块格式无效
我在 dmesg 中看到显示有关模块版本的错误
usbtest:不同意符号 module_layout 的版本
我还在另一个论坛上看到过有关此问题的信息,他们建议在另一台 PC 上再次编译驱动程序。但我认为这不是一个适当的解决方案。
有没有人知道如何解决这个版本依赖问题,因为我的客户想要来自 2.6.30 到 3.9 内核之间任何内核的驱动程序。
所以,我需要一些特定的解决方案,以便编译的驱动程序可以加载到任何 Linux 内核版本上,这取决于特定的内核版本。
请帮助我尽快解决上述问题,因为这对我来说是一个关键问题。
预先感谢您的支持。