【问题标题】:Compiling against libusb-dev on Ubuntu在 Ubuntu 上针对 libusb-dev 进行编译
【发布时间】: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

标签: c gcc compilation libusb


【解决方案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 的包含文件。它们不能直接互换。
猜你喜欢
  • 1970-01-01
  • 2013-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-15
  • 2018-08-19
  • 1970-01-01
相关资源
最近更新 更多