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

时间:2011-10-12 13:50:46

标签: c gcc compilation libusb

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

至少可以说不起作用。

#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;

起初我遵循了一个教程,并且无法以相同的方式编译,因此我决定尝试提供的示例,但失败了。

任何人都可以帮助我吗?解释我做错了什么,因为我迷失了这个。

2 个答案:

答案 0 :(得分:24)

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

安装libusb-1.0-0-dev

而不是:

#include <libusb/libusb.h>

做的:

#include <libusb.h>

编译:

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

答案 1 :(得分:6)

只是解释为什么您尝试使用libusb/libusb.h替换usb.h失败:usb.h是来自linux-headers的标头,而不是libusb-dev的标头。您需要#include <libusb.h>代替。