2011-10-12 14 views
8

Sto cercando di compilare l'esempio libusb.c fornito dal pacchetto libusb (se dl il codice sorgente.)Compilazione contro libusb-dev su Ubuntu

Non funziona per non dire altro.

#include <stdio.h> 
#include <sys/types.h> 
#include <libusb/libusb.h> 

Ciò induce a fallire, non c'è libusb/libusb.h è usb.h, quindi cambiare la situazione. E fallisce in modi nuovi e innovativi.

Ho copiato il file sopra, esattamente, e lo chiamò example.c

Sto usando questi comandi e le variazioni:

gcc -o example example.c -lusb -L /usr/lib/libusb.a 
gcc -o example example.c -lusb -L /usr/lib/libusb.so 

Gli errori ottengo durante la compilazione sono:

example.c:25: error: expected ‘)’ before ‘*’ token 
example.c: In function ‘main’: 
example.c:46: error: ‘libusb_device’ undeclared (first use in this function) 
example.c:46: error: (Each undeclared identifier is reported only once 
example.c:46: error: for each function it appears in.) 
example.c:46: error: ‘devs’ undeclared (first use in this function) 

Line 25: static void print_devs(libusb_device **devs) 

Line 46: libusb_device **devs; 

Inizialmente ho seguito un tutorial e non è riuscito a compilare, più o meno allo stesso modo, quindi ho deciso di provare solo l'esempio fornito, e ciò non è riuscito.

Qualcuno può darmi una mano? Spiega cosa sto facendo male, perché sono perso su questo.

+0

Quale file, esattamente, è stato copiato e il nome example.c? – nmichaels

+0

libusb-1.0.8/libusb-1.0.8/examples/lsusb.c Sto per provare a compilarlo da zero, come originariamente ho usato apt-get install libusb-dev –

+0

Solo una nota, che cosa usato per essere 'examples/lsusb.c' che potrei ottenere tramite' apt-get source libusb-1.0-0' in Ubuntu 11.04, ora è apparentemente [examples/listdevs.c] (http://git.libusb.org /?p=libusb.git;a=blob;f=examples/listdevs.c;h=6ab891725a36424a7f59d5a8ff2c20a7deaec858;hb=HEAD). – sdaau

risposta

21

Questo è quello che dovevo fare su Debian. Dovrebbe essere almeno simile in Ubuntu.

Installare libusb-1.0-0-dev

Invece di:

#include <libusb/libusb.h> 

fare:

#include <libusb.h> 

Compilare con:

gcc example.c `pkg-config --libs --cflags libusb-1.0` 
+0

Super cool, che ha funzionato ... Non so cosa significhi anche la cartella pkg-config --libs etc. Potresti spiegarlo o collegare ad alcuni documenti? –

+2

Google it. È uno strumento molto utile. Invece di aggiungere manualmente i flag di compilazione, puoi semplicemente specificare quali librerie vuoi, passarle a 'pkg-config' e produrre tutte le flag necessarie. –

6

Proprio en spiegazione perché il tuo tentativo di r eplace libusb/libusb.h con usb.h fallimenti: usb.h è un'intestazione da linux-headers, non da libusb-dev. Hai bisogno di #include <libusb.h> invece.

+0

Grazie, sei stato corretto. –

+0

Questa risposta è completamente errata. /usr/include/usb.h non proviene da linux-headers (che NON sono per lo spazio utente da collegare), ma piuttosto è il file include per la più vecchia API libusb-0.1, mentre /usr/include/libusb-1.0/libusb .h è il file di inclusione per la più recente API libusb-1.0. Non sono direttamente intercambiabili. –

Problemi correlati