Libusb 以及如何在 Ubuntu 中使用它的包

Posted

技术标签:

【中文标题】Libusb 以及如何在 Ubuntu 中使用它的包【英文标题】:Libusb and how to use its packages in Ubuntu 【发布时间】:2013-02-09 01:58:09 【问题描述】:

我已经使用以下命令安装了 libusb。我不确定它是否正确,命令是

sudo apt-get install libusb-dev

一旦我安装了(我不确定它是否已经安装,因为我是 Ubuntu 的新手用户),我想知道我将如何使用该库,因为我编写了一些使用 ,但是当我使用

编译该 C++ 文件时
g++ test_libusb.cpp

引发以下错误,

test_libusb.cpp:2:20:致命错误:libusb.h:没有此类文件或目录编译终止。

我不知道该怎么办。我在 Internet 上找不到任何资源来深入了解这个...

这里我想知道两件事:

    如何在 C/C++ 中添加 libusb 库以便使用 ? 一些示例代码是什么?只需几行即可查看 libusb 是否正常工作...

【问题讨论】:

【参考方案1】:

尝试像这样包含它:

#include <libusb-1.0/libusb.h>

然后像这样编译它:

g++ main.cpp -o main -lusb-1.0

【讨论】:

这应该是公认的答案。我使用 Fedora 24,libusb 位于 /usr/include/libusb-1.0/libusb.h 将“-1.0”添加到“-lusb-1.0”修复了所有问题【参考方案2】:

查看http://packages.debian.org/wheezy/i386/libusb-dev/filelist:您要包含的文件是usb.h。此外,您必须告诉编译器在哪里可以找到已编译的库函数:将 -lusb 添加到编译器命令行以使其加载 libusb.so

【讨论】:

正如我所说,如果您在上面的示例中看到该页面 ***.com/questions/14722083/…,我是新手,他们使用了 libusb 示例,正如我提到的 '#incluce ' @UsmanSharifAmjadKhan:嗯,至少在 debianish 系统上,包含文件被命名为 usb.h,而不是 libusb.h,所以你需要使用 #include &lt;usb.h&gt;【参考方案3】:

实际上至少在 Debian 7.4 (wheezy) 中,也可能在 Ubuntu 中,有两个不同的 libusb 包:libusb-dev (0.1.12-20+nmu1) 和 libusb-1.0-0-dev (1.0.11-1)。令人困惑的是,它们都可以同时安装并在不同位置提供头文件:

$ dpkg -L libusb-dev|grep /usr/include
/usr/include
/usr/include/usb.h
$ dpkg -L libusb-1.0-0-dev|grep /usr/include
/usr/include
/usr/include/libusb-1.0
/usr/include/libusb-1.0/libusb.h

【讨论】:

【参考方案4】:

试试#include &lt;usb.h&gt;。 “lib”是Linux命名约定的一部分,即库“foo”的标头为foo.h,在Debian包结构中称为libfoo-dev,链接为-lfoo,编译后的库文件称为@987654325 @ 和libfoo.so

【讨论】:

它使用-lfoo链接,而不是-libfoo

以上是关于Libusb 以及如何在 Ubuntu 中使用它的包的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu14 16使用libusb过程中遇到的问题及解决方法

如何使用 libusb 和 libusb_get_device_descriptor()?

Ubuntu上的Libusb

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

为啥 PyUSB / libusb 在 Linux 上需要 root (sudo) 权限?

Ubuntu14.04安装libusb