我正在構建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。它解決了三個錯誤中的兩個。
嗨。我剛剛安裝了libusb-dev,但錯誤(函數'usb_pipe_endpoint','usb_free_coherent'和'usb_alloc_coherent'的隱式聲明)不斷生成。我應該在源文件中包含libusb嗎? – Ferite
你不應該碰觸源代碼。什麼版本的gcc和usblib安裝?如果這個'rpusbdisp'是我在GitHub早些時候發現的,也就是這裏:https://github.com/robopeak/rpusbdisp –
gcc(Ubuntu 4.4.3-4ubuntu5.1)4.4.3 – Ferite