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

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

我的uname -a:我正在使用Ubuntu 12.04.3
Linux adam-ros 3.5.0-40-通用#62〜precise1-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”中,信息如下所示:

9月25日03:27:58亚当·罗斯内核:[11354.020492] usbcan:未知符号usb_kill_urb(err 0)
Sep 25 03:27:58 adam-ros内核:[11354.020513] usbcan:未知符号usb_submit_urb(err 0)
9月25日03:27:58亚当-罗斯内核:[11354.020540] usbcan:未知符号usb_find_interface(err 0)
9月25日03:27:58亚当-罗斯内核:[11354.020556] usbcan:未知符号usb_put_dev(err 0)
9月25日03:27:58亚当-罗斯内核:[11354.020568] usbcan:未知符号usb_free_urb(err 0)
9月25日03:27:58亚当-罗斯内核:[11354.020584] usbcan:未知符号usb_deregister_dev(err 0)
Sep 25 03:27:58 adam-ros内核:[11354.020600] usbcan:未知符号usb_get_dev(err 0)
9月25日03:27:58亚当-罗斯内核:[11354.020612] usbcan:未知符号usb_alloc_urb(err 0)
9月25日03:27:58亚当-罗斯内核:[11354.020625] usbcan:未知符号usb_register_dev(err 0)
9月25日03:27:58亚当-罗斯内核:[11354.020638] usbcan:未知符号usb_register_driver(err 0)
9月25日03:27:58亚当-罗斯内核:[11354.020650] usbcan:未知符号usb_deregister(err 0)


我想知道是因为我没有加载正确的驱动程序mod还是依赖项,还是应该在Makefile中链接某些东西?

谢谢!

最佳答案

我知道这是一个愚蠢的事情,但是我遇到了完全相同的问题,我通过这个新文件更改了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进行检查)

希望对您有帮助。我知道不是很多,但是我以这种方式解决了同样的问题。

关于linux - 驱动程序中的usb_kill_urb,usb_submit_urb,usb_find_interface显示未知符号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18990642/

10-15 03:46