在 Ubuntu 上针对 libusb-dev 进行编译

Posted

技术标签:

【中文标题】在 Ubuntu 上针对 libusb-dev 进行编译【英文标题】:Compiling against libusb-dev on Ubuntu 【发布时间】:2011-12-06 04:03:47 【问题描述】:

我正在尝试编译 libusb 包提供的示例 libusb.c(如果你 dl 源代码。)

至少可以说是行不通的。

#include <stdio.h>
#include <sys/types.h>
#include <libusb/libusb.h>

这导致它失败,没有libusb/libusb.h 它是usb.h,所以我改变了它。它以新的创新方式失败了。

我已经完全复制了文件,并将其命名为 example.c

我正在使用这些命令和变体:

gcc -o example example.c -lusb -L /usr/lib/libusb.a
gcc -o example example.c -lusb -L /usr/lib/libusb.so

我在编译时遇到的错误是:

example.c:25: error: expected ‘)’ before ‘*’ token
example.c: In function ‘main’:
example.c:46: error: ‘libusb_device’ undeclared (first use in this function)
example.c:46: error: (Each undeclared identifier is reported only once
example.c:46: error: for each function it appears in.)
example.c:46: error: ‘devs’ undeclared (first use in this function)

Line 25: static void print_devs(libusb_device **devs)

Line 46: libusb_device **devs;

起初我遵循了一个教程,但编译失败,方式或多或少相同,所以我决定尝试提供的示例,但失败了。

谁能帮帮我?解释我做错了什么,因为我迷失了这个。

【问题讨论】:

您复制了哪个文件并将其命名为 example.c? libusb-1.0.8/libusb-1.0.8/examples/lsusb.c 我将尝试在 ubuntu 上从头开始编译它,因为我最初使用的是 apt-get install libusb-dev跨度> 请注意,在 Ubuntu 11.04 中我可以通过 apt-get source libusb-1.0-0 获得的 examples/lsusb.c 现在显然是 examples/listdevs.c。 【参考方案1】:

这是我在 Debian 上必须做的。它至少在 Ubuntu 中应该是相似的。

安装libusb-1.0-0-dev

代替:

#include <libusb/libusb.h>

做:

#include <libusb.h>

编译:

gcc example.c `pkg-config --libs --cflags libusb-1.0`

【讨论】:

超级酷,那行得通……我不知道 pkg-config --libs 等东西是什么意思。你能解释一下或者链接到一些文档吗? 谷歌它。这是非常有用的工具。无需手动添加编译标志,您只需指定所需的库,将它们传递给pkg-config,它将输出所有必要的标志。`【参考方案2】:

请解释为什么您尝试用usb.h 替换libusb/libusb.h 失败:usb.h 是来自linux-headers 的标头,而不是来自libusb-dev。你需要#include &lt;libusb.h&gt;

【讨论】:

这个答案完全不正确。 /usr/include/usb.h 不是来自 linux-headers(不是供用户空间链接的),而是旧 libusb-0.1 API 的包含文件,而 /usr/include/libusb-1.0/libusb .h 是较新的 libusb-1.0 API 的包含文件。它们不能直接互换。

以上是关于在 Ubuntu 上针对 libusb-dev 进行编译的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu chrome一点进发帖框就卡住了

ubuntu kylin的桌面问题

[PyImageSearch] Ubuntu16.04下针对OCR安装Tesseract

ubuntu 命令行界面和图形界面转换

Ubuntu系统制作U盘启动项以及针对U盘挂载后显示"只读系统"的解决措施

先在SD卡上启动U-boot,再烧写新的U-boot进Nandflash