【问题标题】:Alternatives for usb_pipe_endpoint in older kernels旧内核中 usb_pipe_endpoint 的替代方案
【发布时间】:2014-05-16 09:25:53
【问题描述】:

我正在为 Ubuntu 10.04(内核 2.6.32.52)上的 USB 显示器构建设备驱动程序。根据制造商的说法,系统必须具有 Git、Linux Headers、GCC、Binutils 和 Make。我检查了所有这些东西。然后我从厂商的github站点下载了驱动源码,cd到驱动目录运行make,但是有一些错误和警告:

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。它解决了三个错误中的两个。

【问题讨论】:

    标签: driver kernel-module


    【解决方案1】:

    你也安装了 libusb 吗?

    如果没有,请安装它sudo apt-get install libusb-dev,然后再次尝试make cleanmake

    只需添加、还原您对这些文件所做的更改,因为它们也在 usb.h(在 libusb 中)中声明。

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

    注意:这将重置所有未提交的 git 更改!

    【讨论】:

    • 嗨。我刚刚安装了 libusb-dev,但不断生成错误(函数‘usb_pipe_endpoint’、‘usb_free_coherent’和‘usb_alloc_coherent’的隐式声明)。我应该在源文件中包含 libusb 吗?
    • 您不必接触源代码。安装了什么版本的 gcc 和 usblib?如果这个 rpusbdisp 是我之前在 GitHub 上找到的那个,即这里:github.com/robopeak/rpusbdisp
    • gcc (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3
    • gcc: (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3, libusb-dev: 2:0.1.12-14ubuntu0.2。运行 $dpkg-query -l 'libusb*' 后,我得到了所有这些巧合:libusb-0.1-4 2:0.1.12-14ubunt, libusb-1.0-0 2:1.0.6-1, libusb-1.0-0 -dev 2:1.0.6-1, libusb-dev 2:0.1.12-14ubunt, libusb0
    • 是的,你指向的 github 就是我要构建的那个。
    猜你喜欢
    • 2021-11-13
    • 2019-03-14
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    相关资源
    最近更新 更多