我正在编译内核驱动程序(我对驱动程序几乎一无所知)。
驱动程序代码是在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中的某些内容?
回答问题!
答案 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检查)
我希望它可以帮到你。我知道并不多,但我以这种方式解决了同样的问题。