C++ LIBUSB编译错误
我正在Ubuntu上运行c/c++并试图编译以下代码C++ LIBUSB编译错误,c++,c,ubuntu,installation,libusb,pkg-config,gcc,C++,C,Ubuntu,Installation,Libusb,Pkg Config,Gcc,我正在Ubuntu上运行c/c++并试图编译以下代码 #include <cassert> #include <cstdio> #include <libusb-1.0/libusb.h> int main() { libusb_context *context = NULL; libusb_device **list = NULL; int rc = 0; ssize_t count = 0; rc = libus
#include <cassert>
#include <cstdio>
#include <libusb-1.0/libusb.h>
int main() {
libusb_context *context = NULL;
libusb_device **list = NULL;
int rc = 0;
ssize_t count = 0;
rc = libusb_init(&context);
assert(rc == 0);
count = libusb_get_device_list(context, &list);
assert(count > 0);
for (size_t idx = 0; idx < count; ++idx) {
libusb_device *device = list[idx];
libusb_device_descriptor desc = {0};
rc = libusb_get_device_descriptor(device, &desc);
assert(rc == 0);
printf("Vendor:Device = %04x:%04x\n", desc.idVendor, desc.idProduct);
}
}
我是Ubuntu、c/c++和libusb的新手,希望能提供帮助
谢谢这是一个链接器错误
您需要告诉链接器包含libusb
,其中包含这些引用函数(例如-lusb
)以及它的位置(例如-L/usr/local/lib
)。实际值将取决于您的安装
作为突出显示,您可以使用该工具确定链接器标志。在我的系统上,这看起来像:
% pkg-config --libs libusb-1.0
-L/usr/local/Cellar/libusb/1.0.9/lib -lusb-1.0
您可以将此信息直接提供给:
假设一切按照计划进行,您现在应该在当前工作目录中有一个可执行文件libusbtest
。您可以这样运行它:
% ./libusbtest
Vendor:Device = 05ac:8006
Vendor:Device = 05ac:8006
Vendor:Device = 05ac:8005
Vendor:Device = 05ac:8005
Vendor:Device = 05ac:850a
Vendor:Device = 05ac:023f
Vendor:Device = 05ac:8403
使用
pkg config
获取库所需的编译器标志:
g++ libusbtest.cpp `pkg-config --libs libusb` -o libusbtest
注:这是说,没有所谓的“c/c++”语言。完全同意约翰西韦布的观点。您也没有告诉我们如何编译代码。“c/c++”指的是c和c++如何链接任何代码示例,因为正如我提到的,我是一个新手用户,所以如果您能告诉我什么命令,或者您知道任何可以帮助我理解这些链接器错误的网站。。。thanks@UsmanSharifAmjadKhan:这将取决于您使用的链接器。正如我所说,我是新手,因此我已安装了libusb-1.0-dev和libusb-dev。。。我不确定链接器是什么?链接器错误?你的意思是这些与操作系统或C或C++或LIUSB…我如何知道我使用的是哪种链接器?@UsmanSharifAmjadKhan:可能有助于解释链接器是什么和做什么。大多数人都使用编译器附带的链接器。请注意,对于libusb-1.0,您会使用pkg config--libs libusb-1.0thanks@Avidanborisov我尝试了上面的命令(g++libusbtest.cpp'pkg config--libs libusb-1.0'-o libusbtest),但编译器错误(或错误不知道)表示“g++libusbtest.cpp'pkg config--libs libusbtest-1.0'-o libusbtest”…请您再帮我一次好吗…谢谢您的时间…:)您需要在
pkg config
命令周围使用反勾,而不是单引号。或者:g++libusbtest.cpp$(pkg config--libs libusb)-o libusbtest
。非常感谢,我运行了上面的命令,它运行时没有显示任何内容,但问题是它没有打印任何内容…正如您所看到的,我正在打印供应商id和设备id,但没有打印任何内容…如果我打扰了您,我很抱歉…我如何知道我是否从这段代码中得到了我想要的内容?…:)thanks@UsmanSharifAmjadKhan:由运行构建的可执行文件。
% ./libusbtest
Vendor:Device = 05ac:8006
Vendor:Device = 05ac:8006
Vendor:Device = 05ac:8005
Vendor:Device = 05ac:8005
Vendor:Device = 05ac:850a
Vendor:Device = 05ac:023f
Vendor:Device = 05ac:8403
g++ libusbtest.cpp `pkg-config --libs libusb` -o libusbtest