Paket (Linux) installiert, kann es aber nicht in meinem Code Einbinden

Gast #3938930
Lesenswert?
• ▲
▼
Hallo,

unter Linux (Ubuntu ohne Grafik) möchte ich gerne ein USB-device 
ansteuern können. Dazu habe ich zuerst die library libusb installiert:
1
sudo apt-get install libusb-dev

Nun möchte ich diese lib in meinem Code verwenden:
1
...
2
#include <libusb.h>
3
...

Erhalte aber diese Fehlermeldung:
1
ubuntu@arm:~/src$ g++ usb_connect.cpp -lusb -o exe
2
usb_connect.cpp:2:20: fatal error: libusb.h: No such file or directory
3
 #include <libusb.h>
4
                    ^
5
compilation terminated.

Kann mir jemand sagen was ich falsch mache? Meine Vermutung wäre, dass 
ich noch angeben muss, wo sich die lib auf dem System befindet (-L). 
Aber (falls das der Fall ist) leider weiß ich selber nicht, wo Linux die 
libusb hin-installiert hat. Ich sollte noch erwähnen, dass ich leider 
Linux-Neuling bin.
#3938985
Lesenswert?
• ▲
▼
Wenn man -dev installiert, wird das dazuehörige Library-Paket über die 
Abhängigkeiten automatisch installiert.

Es gibt libusb (alt) und libusb-1.0 (neu). Die unterscheiden sich etwas 
in der API, 1.0 hat im wesentlichen libusb_-Prefixe bei den 
Funktionsnamen. Die alte libusb sollte man eigentlich nicht mehr nutzen.

Wenn libusb-1.0-0-dev installiert ist, braucht es

#include <libusb-1.0/libusb.h>

und -lusb-1.0 zum Linken.
Gast #3939125
Lesenswert?
• ▲
▼
Danke für eure Tipps.

Mit
> find /usr/include -name libusb.h
gab es leider gar keine Ergebnisse.

Mit
> dpkg -S libusb
wurden einige Dateien aufgelistet, die sich fast alle unter 
"/usr/share/doc/libusb-dev/html/" befanden. Wirklich brauchbares konnte 
ich allerdings nicht sehen.

Ich habe nun die libusb deinstalliert, wie beschrieben die libusb-1.0 
installiert und neu im Code eingebunden. Warum auch immer, aber nun 
bekomme ich keine Fehlermeldung mehr.
Mein Problem wäre somit zwar gelöst, aber warum, verstehe ich nun 
trotzdem nicht. Eigentlich hat doch der Compiler "genau" die gleichen 
Infos wie vorher, nur eben mit aktuelleren Daten.
#3939272
Lesenswert?
• ▲
▼
R. Freitag schrieb:
> Die Libusb hat header für den normalen Gebrauch und zusätzlich
> noch welche für debugging und development.

Es gibt keine "header für den normalen Gebrauch". Allerdings gibt es ein 
Paket, das nur die Lib selbst als shared object enthält und ein Paket, 
das die dazugehörigen Header und ggf. andere zum Compilieren notwendige 
Hilfsmittel enthält, Die lib wird installiert sein, aber die Header 
nicht.

Georg A. schrieb:
> Wenn libusb-1.0-0-dev installiert ist, braucht es
>
> #include <libusb-1.0/libusb.h>
>
> und -lusb-1.0 zum Linken.

Am besten holt man sich die notwenigen Kommandozeilenparameter for 
Compiler und Linker über pkg-config.

Für den Compiler
1
pkg-config libusb-1.0 --cflags
und für den Linker
1
pkg-config libusb-1.0 --libs

Im Makefile kann man das dann z.B. so eintragen:
1
LIBUSB_CFLAGS := $(shell pkg-config libusb-1.0 --cflags)
2
# ...
3
CFLAGS = $(LIBUSB_CFLAGS) ...(und alle anderen gewünschten Flags)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren