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