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

J. *_*tin 8 c gcc compilation libusb

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

至少可以说它没有用.

#include <stdio.h>
#include <sys/types.h>
#include <libusb/libusb.h>
Run Code Online (Sandbox Code Playgroud)

这导致它失败,没有libusb/libusb.husb.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
Run Code Online (Sandbox Code Playgroud)

编译时遇到的错误是:

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;
Run Code Online (Sandbox Code Playgroud)

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

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

Pio*_*zmo 25

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

安装 libusb-1.0-0-dev

代替:

#include <libusb/libusb.h>
Run Code Online (Sandbox Code Playgroud)

做:

#include <libusb.h>
Run Code Online (Sandbox Code Playgroud)

编译:

gcc example.c `pkg-config --libs --cflags libusb-1.0`
Run Code Online (Sandbox Code Playgroud)

  • 谷歌一下.这是非常有用的工具.您可以只指定所需的库,将它们传递给`pkg-config`,然后输出所有必要的标志,而不是手动添加编译标志. (3认同)

jpa*_*cek 6

刚恩解释为什么你试图取代libusb/libusb.husb.h失败:usb.h是从一个头linux-headers,而不是从libusb-dev.你需要#include <libusb.h>改为.