2013-09-24 101 views
0

我正在編譯一個內核驅動程序(我對驅動程序幾乎一無所知)。usb_kill_urb,usb_submit_urb,usb_find_interface在驅動程序中顯示未知符號

驅動程序代碼寫在2.6下,我將它移植到3.5.40。

uname -a:我使用Ubuntu 12.04.3 Linux的ADAM-ROS 3.5.0-40泛型#62〜precise1 Ubuntu的SMP週五08月23日17時38分26秒UTC 2013 x86_64的x86_64的x86_64的GNU/Linux的

我使用的信息被列爲下面的命令「命令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中的一些東西?

Thx for answers!

+0

嘗試modprobe而不是insmod。看起來像usb-storage.ko沒有加載。另外嘗試'lsmod | grep usb'。其中一些符號顯示在該驅動程序中:nm -g/lib/modules /'uname -r'/kernel/drivers/usb/storage/usb-storage.ko –

+0

加載usb-storage後仍存在同樣的問題。我確實在USB存儲設備中找到了這些符號。這很奇怪,不是嗎? – Adam

+0

等一下。 usb-storage的nm:usb_kill_urb是'U',意思是'未定義符號已使用但未定義。依賴另一個圖書館。「也許我會嘗試一些其他庫。 – Adam

回答

0

我知道這是一個愚蠢的事情,但我有完全相同的問題,我改變了這個新的生成文件(沒有什麼特別的....),它的工作。

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)

我希望它可以幫助你。我知道的並不多,但我通過這種方式解決了同樣的問題。

+0

Thx的意見。但是這個項目很久以前,我不知道我能否找到代碼。無論如何,希望它能幫助那些可能和我們一樣有問題的後來者。 – Adam

相關問題