Libusb and how to use its packages in Ubuntu

2019-06-22 13:07发布

问题:

I have installed libusb by using the following command. I am not sure if it was right or not and the command was

sudo apt-get install libusb-dev

Once I have installed (and I am not sure if it has installed or not because I am a novice user of Ubuntu), I want to know how would I use the library, because I write some sample code which uses <libusb.h>, but when I compile that C++ file using

g++ test_libusb.cpp

that throws the following error,

test_libusb.cpp:2:20: fatal error: libusb.h: No such file or directory compilation terminated.

I am clueless what to do. I can't find any source on the Internet to get to the bottom of this...

I want to know two things here:

  1. How do I add the libusb library in C/C++ so I can use <libusb.h>?
  2. What would some sample code be? Only a few lines to see if libusb is working...

回答1:

Have a look at http://packages.debian.org/wheezy/i386/libusb-dev/filelist: The file you want to include is usb.h. Also, you'll have to tell the compiler where it can find the compiled library functions: Add -lusb to the compiler command line to make it load libusb.so.



回答2:

Try including it like so:

#include <libusb-1.0/libusb.h>

and then compile it like so:

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


回答3:

Actually at least in Debian 7.4 (wheezy), and probably in Ubuntu also, there are two distinct libusb packages: libusb-dev (0.1.12-20+nmu1) and libusb-1.0-0-dev (1.0.11-1). Confusingly, they can both be installed concurrently and provide header files in different locations:

$ 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:

Try #include <usb.h>. The "lib" is part of the Linux naming convention, i.e. library "foo" has header foo.h and is called libfoo-dev in the Debian package structure, and linked as -lfoo, and the compiled library files are called libfoo.a and libfoo.so.