Ich versuche, die libusb-API auf meinem Betriebssystem einzurichten. Ich habe libusb api auf libusb.org heruntergeladen. Ich habe das Standardinstallationsverfahren befolgt:
cd into directory
./configure
make
make check //without errors
make install
Dann habe ich Eclipse C / C ++ gestartet und Code aus dem Tutorial im Internet kopiert. Aber als ich versuchte es zu bauen, bekam ich folgende Ausgabe:
main.cpp:(.text+0x19): undefined reference to `libusb_init'
main.cpp:(.text+0x76): undefined reference to `libusb_set_debug'
main.cpp:(.text+0x8a): undefined reference to `libusb_get_device_list'
main.cpp:(.text+0x136): undefined reference to `libusb_free_device_list'
main.cpp:(.text+0x142): undefined reference to `libusb_exit'
/tmp/ccOWJGwe.o: In function `printdev(libusb_device*)':
main.cpp:(.text+0x162): undefined reference to `libusb_get_device_descriptor'
main.cpp:(.text+0x28a): undefined reference to `libusb_get_config_descriptor'
main.cpp:(.text+0x4d4): undefined reference to `libusb_free_config_descriptor'
collect2: ld returned 1 exit status
Ich habe libusb.so in / lib und auch usb.h in / usr / local / include und den Link für .so und libusb.a in / usr / local / lib.
Auch das #include im Code ist korrekt.
Ich weiß, dass das Problem im Linker liegt, aber ich kann es irgendwie nicht zum Laufen bringen :)
Ich verwende das Betriebssystem Fedora 15 und den Versionscompiler gcc 4.6.0 20110603 (Red Hat 4.6.0-10).
Was kann ich also tun, um diese undefinierten Referenzen aufzulösen? Vielen Dank für die Hilfe :)
Wenn Sie das Bibliothekslinker-Flag für die Kompilierung im Linker setzen müssen, können Sie durch Ausführen eine vollständige Liste in der Konsole abrufen
pkg-config --list-all
Dies sind die Bibliotheken, die Sie auf Ihrem System installiert haben und die Sie mit denen verknüpfen müssen, die Sie verwenden möchten. In Ihrem Beispiel ist es also libusb
pkg-config --libs libusb
da sollte die Ausgabe sein
-lusb
oder
-lusb-1.0
Dies gibt Ihnen die Flagge, die Sie an den Linker übergeben müssen. z.B
g++ myfile.cpp -lusb[-1.0]
Dann bearbeiten Sie die Konfiguration des Projekts und suchen nach den Linkerflags. Dafür sollte irgendwo in den Build-Optionen ein Textfeld dafür vorhanden sein. Ich bin mir nicht ganz sicher, wo ich es finden kann, aber es zu googeln schlug vor:
Project -> Properties -> C/C++
Build -> Miscellaneous -> flags
Nachdem Sie es gefunden haben, fügen Sie einfach das Linker-Flag in das Textfeld ein und es sollte Ihnen gut gehen.
BEARBEITEN
Da meine Antwort die akzeptierte ist, habe ich auch die andere Flagge hinzugefügt, die für viele Leute zu funktionieren scheint.
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen