显示未知符号的驱动程序中的usb_kill_urb,usb_submit_urb,usb_find_interface

时间:2013-09-24 19:44:06

标签: linux linux-kernel kernel driver linux-device-driver

我正在编译内核驱动程序(我对驱动程序几乎一无所知)。

驱动程序代码是在2.6下编写的,我将它移植到3.5.40。

我的uname -a:我正在使用Ubuntu 12.04.3 Linux adam-ros 3.5.0-40-generic#62~minision1-Ubuntu SMP Fri Aug 23 17:38:26 UTC 2013 x86_64 x86_64 x86_64 GNU / Linux

我使用了命令“sudo insmod ./usbcan.ko”,在“/var/log/kern.log”中使用了以下信息:

Sep 25 03:27:58 adam-ros kernel: [11354.020492] usbcan: Unknown symbol usb_kill_urb (err 0)
Sep 25 03:27:58 adam-ros kernel: [11354.020513] usbcan: Unknown symbol usb_submit_urb (err 0)
Sep 25 03:27:58 adam-ros kernel: [11354.020540] usbcan: Unknown symbol usb_find_interface (err 0)
Sep 25 03:27:58 adam-ros kernel: [11354.020556] usbcan: Unknown symbol usb_put_dev (err 0)
Sep 25 03:27:58 adam-ros kernel: [11354.020568] usbcan: Unknown symbol usb_free_urb (err 0)
Sep 25 03:27:58 adam-ros kernel: [11354.020584] usbcan: Unknown symbol usb_deregister_dev (err 0)
Sep 25 03:27:58 adam-ros kernel: [11354.020600] usbcan: Unknown symbol usb_get_dev (err 0)
Sep 25 03:27:58 adam-ros kernel: [11354.020612] usbcan: Unknown symbol usb_alloc_urb (err 0)
Sep 25 03:27:58 adam-ros kernel: [11354.020625] usbcan: Unknown symbol usb_register_dev (err 0)
Sep 25 03:27:58 adam-ros kernel: [11354.020638] usbcan: Unknown symbol usb_register_driver (err 0)
Sep 25 03:27:58 adam-ros kernel: [11354.020650] usbcan: Unknown symbol usb_deregister (err 0)

我想知道是不是我没有加载正确的驱动程序mod作为依赖项,或者我应该链接Makefile中的某些内容?

回答问题!

1 个答案:

答案 0 :(得分:0)

我知道这是一个愚蠢的事情,但我有完全相同的问题,我通过这个新的改变了Makefile(没有什么特别的......)并且它有效。

obj-m := usbmodule.o

KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)

all:
    $(MAKE) -C $(KERNELDIR) M=$(PWD)

clean:
    rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions

我先清理了以前的编辑(我之前做了一些测试)然后才有效。也许问题出现在以前的编译文件中,如usbmodule.o和其他文件。我不能给你一个确切的答案,只建议你尝试清理以前的编译文件,然后使用这个简单的Makefile再次编译。请记住您当前的Linux内核版本必须与已安装的Linux内核头文件匹配。 (用uname -a检查)

我希望它可以帮到你。我知道并不多,但我以这种方式解决了同样的问题。