当前位置: 技术问答>linux和unix
insmod: : unknown symbol in module不能加载驱动问题
来源: 互联网 发布时间:2016-12-27
本文导语: 我之前有一块smartarm3250的开发板,内核版本2.6.28 后来又买了一块M32X0-FN6LI的工控核心板,内核版本也是2.6.28 之前在开发板上能加载的驱动keydrv.ko放到后来的核心板上就报错了 错误代码如下: # insmod keydrv.ko ...
我之前有一块smartarm3250的开发板,内核版本2.6.28
后来又买了一块M32X0-FN6LI的工控核心板,内核版本也是2.6.28
之前在开发板上能加载的驱动keydrv.ko放到后来的核心板上就报错了
错误代码如下:
# insmod keydrv.ko
keydrv: disagrees about version of symbol platform_device_put
keydrv: Unknown symbol platform_device_put
keydrv: disagrees about version of symbol misc_deregister
keydrv: Unknown symbol misc_deregister
keydrv: disagrees about version of symbol platform_driver_unregister
keydrv: Unknown symbol platform_driver_unregister
keydrv: disagrees about version of symbol platform_driver_register
keydrv: Unknown symbol platform_driver_register
keydrv: disagrees about version of symbol platform_device_unregister
keydrv: Unknown symbol platform_device_unregister
keydrv: disagrees about version of symbol platform_device_add
keydrv: Unknown symbol platform_device_add
keydrv: disagrees about version of symbol platform_device_alloc
keydrv: Unknown symbol platform_device_alloc
keydrv: disagrees about version of symbol misc_register
keydrv: Unknown symbol misc_register
insmod: cannot insert 'keydrv.ko': unknown symbol in module
而且任何自己做的 驱动都加不上去。按说一样版本的内核驱动应该不会有问题啊
开发板我有内核的源程序,核心板没有内核的源程序(因为这个公司说是工控产品不卖源码,可以提供定制),
这个问题是怎么引起的?改如何解决?
请高手指点。
后来又买了一块M32X0-FN6LI的工控核心板,内核版本也是2.6.28
之前在开发板上能加载的驱动keydrv.ko放到后来的核心板上就报错了
错误代码如下:
# insmod keydrv.ko
keydrv: disagrees about version of symbol platform_device_put
keydrv: Unknown symbol platform_device_put
keydrv: disagrees about version of symbol misc_deregister
keydrv: Unknown symbol misc_deregister
keydrv: disagrees about version of symbol platform_driver_unregister
keydrv: Unknown symbol platform_driver_unregister
keydrv: disagrees about version of symbol platform_driver_register
keydrv: Unknown symbol platform_driver_register
keydrv: disagrees about version of symbol platform_device_unregister
keydrv: Unknown symbol platform_device_unregister
keydrv: disagrees about version of symbol platform_device_add
keydrv: Unknown symbol platform_device_add
keydrv: disagrees about version of symbol platform_device_alloc
keydrv: Unknown symbol platform_device_alloc
keydrv: disagrees about version of symbol misc_register
keydrv: Unknown symbol misc_register
insmod: cannot insert 'keydrv.ko': unknown symbol in module
而且任何自己做的 驱动都加不上去。按说一样版本的内核驱动应该不会有问题啊
开发板我有内核的源程序,核心板没有内核的源程序(因为这个公司说是工控产品不卖源码,可以提供定制),
这个问题是怎么引起的?改如何解决?
请高手指点。
|
這是因為您作的*.ko與其它模組有相依性關係
請重新依據錯誤訊息找出如何重新加載入內核菜單,
並重新編譯
請重新依據錯誤訊息找出如何重新加載入內核菜單,
並重新編譯
|
两个问题:
(1)你的驱动里有使用“platform_device_put”这些函数吗?
(2)你确定自己编写的任何驱动都加载不上?比如说你写一个“hello world”的空驱动也不行吗?
(1)你的驱动里有使用“platform_device_put”这些函数吗?
(2)你确定自己编写的任何驱动都加载不上?比如说你写一个“hello world”的空驱动也不行吗?
|
环境不一样很正常,内核config的时候可能也有区别。模块可能用到了内核的函数,或者别的模块的函数,但是新的内核没有导出这些函数。
新内核要保持一致,且编译安装,依赖模块加上。
如果要重新编译模块需要重新加入内核,make modules_install,然后编译模块,
如果编译不了需要下载之前版本的gcc 和make
新内核要保持一致,且编译安装,依赖模块加上。
如果要重新编译模块需要重新加入内核,make modules_install,然后编译模块,
如果编译不了需要下载之前版本的gcc 和make
|
两个板子虽然使用同一个发布版的内核,但是因平台特点,会在内核中打入不同的patch,导致你的驱动不能挂载,找到目标内核的源码重新编译
|
内核版本不一致,重新编译一下就ok。