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:
- How do I add the libusb library in C/C++ so I can use <libusb.h>?
- What would some sample code be? Only a few lines to see if libusb is working...
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
.
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
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
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
.