BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #1993同步于 2008/10/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖

insmod挂载驱动模块的问题

mac1314
2008/10/29镜像同步6 回复
编译了一个驱动模块 insmod的时候提示 -------------------------------------------------------------------------------------------- [root@localhost adp94xx-1.0.8-12.src]# insmod adp94xx.ko insmod: error inserting 'adp94xx.ko': -1 Unknown symbol in module -------------------------------------------------------------------------------------------- 查看/var/log/messages 有如下描述: Oct 28 23:33:08 localhost kernel: adp94xx: Unknown symbol scsi_remove_host Oct 28 23:33:08 localhost kernel: adp94xx: Unknown symbol scsi_partsize Oct 28 23:33:08 localhost kernel: adp94xx: Unknown symbol scsi_device_set_state Oct 28 23:33:08 localhost kernel: adp94xx: Unknown symbol scsi_add_device Oct 28 23:33:08 localhost kernel: adp94xx: Unknown symbol scsi_host_put Oct 28 23:33:08 localhost kernel: adp94xx: Unknown symbol scsi_scan_host Oct 28 23:33:08 localhost kernel: adp94xx: Unknown symbol scsi_add_host Oct 28 23:33:08 localhost kernel: adp94xx: Unknown symbol scsi_adjust_queue_depth Oct 28 23:33:08 localhost kernel: adp94xx: Unknown symbol scsi_unblock_requests Oct 28 23:33:08 localhost kernel: adp94xx: Unknown symbol scsi_remove_device Oct 28 23:33:08 localhost kernel: adp94xx: Unknown symbol scsi_block_requests Oct 28 23:33:08 localhost kernel: adp94xx: Unknown symbol scsi_host_alloc ----------------------------------------------------------------------------------------------------- why? 请指教 PS: kernel 2.6.16 挂在成功过一次,在/proc/modules文件中有记录 rmmod 后再insmod就没成功过 总是提示“格式非法”或者“未定义的符号 ” 驱动程序在编译的时候也有一些警告,但是编译可以通过,可声称.ko文件
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
lester98机器人#1 · 2008/10/29
这是因为你调用的这些函数都没有使用下面这个宏,编译的时候只是在头文件中找到了声明,但是在运行的时候就无法在kernel空间中找到函数体。而这样声明过的函数会生成一个列表,在模块加载的时候就能找到函数体 EXPORT_SYMBOL(at91_set_gpio_value);
ericyosho机器人#2 · 2008/10/29
EXPORT_SYMBOL怎么感觉有点像DLL呢?也要import或者export之类的。
mac1314机器人#3 · 2008/10/29
EXPORT_SYMBOL的可能被排除 初步断定是调用其他的驱动模块的问题,可能是没有编译内核make menuconfig的问题, 还在找那些函数所在的文件,再查看一下Kconfig,但愿能搞定......
lester98机器人#4 · 2008/10/29
嗯,那就是那些函数根本没有被编译到内核里,我还纳闷呢,你怎么会引用这么多没有被export的函数,修改也会很麻烦 【 在 mac1314 (NewBer) 的大作中提到: 】 : EXPORT_SYMBOL的可能被排除 : 初步断定是调用其他的驱动模块的问题,可能是没有编译内核make menuconfig的问题, : 还在找那些函数所在的文件,再查看一下Kconfig,但愿能搞定...... : ...................
ZenZero机器人#5 · 2008/10/29
模块依赖?
mac1314机器人#6 · 2008/10/29
3Q, 楼上诸位,问题解决了 依赖确实是依赖 不过,比较弱,昨天晚上之前弄过menuconfig中的SCSI 驱动选项,但是编译之后没有 make install , 所以导致挂载的时候,无法从当前的运行内核中找到那几个模块,找了半天的,最后发现可能是这个原因 试了一把make install insmod /rmmod 都可以了...... 比较弱......