2014-05-15 35 views
0

我正在構建Ubuntu 10.04(內核2.6.32.52)上的USB顯示器的設備驅動程序。根據製造商的說法,系統必須具有Git,Linux Headers,GCC,Binutils和Make。我檢查了所有這些事情。然後,我下載了從製造商的GitHub網站上的驅動程序源代碼,我cd到驅動程序目錄,並運行make,但也有一些錯誤和警告:舊版內核中usb_pipe_endpoint的替代方案

make -C /lib/modules/`uname -r`/build KCPPFLAGS="-I/home/someuser/rpusbdisp/drivers/linux-driver/src -I/home/someuser/rpusbdisp/drivers/linux-driver/../common" M=/home/someuser/rpusbdisp/drivers/linux-driver modules 
make[1]: Entering directory `/usr/src/linux-headers-2.6.32-52-generic' 
Makefile:597: "WARNING: Appending $KCPPFLAGS (-I/home/someuser/rpusbdisp/drivers/linux-driver/src -I/home/someuser/rpusbdisp/drivers/linux-driver/../common) from command line to kernel $CPPFLAGS" 
    CC [M] /home/someuser/rpusbdisp/drivers/linux-driver/src/usbhandlers.o 
/home/someuser/rpusbdisp/drivers/linux-driver/src/usbhandlers.c: In function ‘_status_start_querying’: 
/home/someuser/rpusbdisp/drivers/linux-driver/src/usbhandlers.c:300: error: implicit declaration of function ‘usb_pipe_endpoint’ 
/home/someuser/rpusbdisp/drivers/linux-driver/src/usbhandlers.c:300: warning: assignment makes pointer from integer without a cast 
/home/someuser/rpusbdisp/drivers/linux-driver/src/usbhandlers.c: In function ‘_on_release_disp_tickets_pool’: 
/home/someuser/rpusbdisp/drivers/linux-driver/src/usbhandlers.c:866: error: implicit declaration of function ‘usb_free_coherent’ 
/home/someuser/rpusbdisp/drivers/linux-driver/src/usbhandlers.c: In function ‘_on_alloc_disp_tickets_pool’: 
/home/someuser/rpusbdisp/drivers/linux-driver/src/usbhandlers.c:905: error: implicit declaration of function ‘usb_alloc_coherent’ 
/home/someuser/rpusbdisp/drivers/linux-driver/src/usbhandlers.c:905: warning: assignment makes pointer from integer without a cast 
/home/someuser/rpusbdisp/drivers/linux-driver/src/usbhandlers.c:936: warning: format ‘%lu’ expects type ‘long unsigned int’, but argument 5 has type ‘size_t’ 
make[2]: *** [/home/someuser/rpusbdisp/drivers/linux-driver/src/usbhandlers.o] Error 1 
make[1]: *** [_module_/home/someuser/rpusbdisp/drivers/linux-driver] Error 2 
make[1]: Leaving directory `/usr/src/linux-headers-2.6.32-52-generic' 
make: *** [modules] Error 2 

我希望有人能提供給我一些指導,什麼我還需要檢查其他軟件包,或者是否有可替代的函數來代替'usb_pipe_endpoint'和'usb_alloc_coherent'。

謝謝。

因此,我更改了usb_alloc_coherent與usb_buffer_alloc和usb_free_coherent與usb_buffer_free。它解決了三個錯誤中的兩個。

回答

0

您是否也安裝了libusb?

如果沒有,安裝它sudo apt-get install libusb-dev然後再試一次make cleanmake

只需添加,還原那些在usb.h中聲明的文件的更改(在libusb中)。

git reset --hard如果你使用git克隆它。

注意:這將重置所有未提交的git更改!

+0

嗨。我剛剛安裝了libusb-dev,但錯誤(函數'usb_pipe_endpoint','usb_free_coherent'和'usb_alloc_coherent'的隱式聲明)不斷生成。我應該在源文件中包含libusb嗎? – Ferite

+0

你不應該碰觸源代碼。什麼版本的gcc和usblib安裝?如果這個'rpusbdisp'是我在GitHub早些時候發現的,也就是這裏:https://github.com/robopeak/rpusbdisp –

+0

gcc(Ubuntu 4.4.3-4ubuntu5.1)4.4.3 – Ferite