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

Gast #3938930
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.
#3938941
Du hat nicht die Libusb installiert, und der Compiler hat sie nicht 
gefunden. Installiert hast du nur die zusätzlichen header der libusb, 
aber die lib fehlt noch.

Ändere das mit  sudo apt-get install libusb

und versuche es nochmal.

Gruss

Robert
#3938985
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 #3939055
Mit
> find /usr/include -name libusb.h
kann man den Header suchen.

Wenn der Paketname bekannt ist, kann man mit
> dpkg -S <paket>
den Inhalt anzeigen.
Gast #3939125
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.
(Firma: ☣ ⍵ ☣) Persönliche Seite #3939132
Installiere dir apt-file.
Dann kannst du mit apt-file search libusb.h finden, in welchem Paket die 
Datei steckt.
Hier bei Debian: libusb-1.0-0-dev: /usr/include/libusb-1.0/libusb.h

apt-file ist gerade für Gelegenheits Linux User sehr hilfreich, weil es 
nicht nur in den installierten, sondern auch in den Repositories sucht
#3939272
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

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.