0

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

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

我的uname -a:我正在使用 Ubuntu 12.04.3 Linux adam-ros 3.5.0-40-generic #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 adam-ros 内核:[11354.020492] usbcan:未知符号 usb_kill_urb(错误 0)
9 月 25 日 03:27:58 adam-ros 内核:[11354.020513] usbcan:未知符号 usb_submit_urb (err 0)
9 月 25 日 03:27:58 adam-ros 内核:[11354.020540] usbcan:未知符号 usb_find_interface(错误 0)
9 月 25 日 03:27:58 adam-ros 内核:[11354.020556] usbcan:未知符号 usb_put_dev(错误 0)
9 月 25 日 03:27:58 adam-ros 内核:[11354.020568] usbcan:未知符号 usb_free_urb(错误 0)
9 月 25 日 03:27:58 adam-ros 内核:[11354.020584] usbcan:未知符号 usb_deregister_dev(错误 0)
9 月 25 日 03:27:58 adam-ros 内核:[11354.020600] usbcan:未知符号 usb_get_dev(错误 0)
9 月 25 日 03:27:58 adam-ros 内核:[11354.020612] usbcan:未知符号 usb_alloc_urb(错误 0)
9 月 25 日 03:27:58 adam-ros 内核:[11354.020625] usbcan:未知符号 usb_register_dev(错误 0)
9 月 25 日 03:27:58 adam-ros 内核:[11354.020638] usbcan:未知符号 usb_register_driver (err 0)
9 月 25 日 03:27:58 adam-ros 内核:[11354.020650] usbcan:未知符号 usb_deregister (err 0)

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

谢谢回答!

4

1 回答 1

0

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

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

于 2017-01-19T10:15:30.553 回答