我正在尝试编译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;
起初我遵循了一个教程,并且无法以相同的方式编译,因此我决定尝试提供的示例,但失败了。
任何人都可以帮助我吗?解释我做错了什么,因为我迷失了这个。
答案 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>
代替。