2011-10-12 14 views
8

Estoy tratando de compilar el ejemplo libusb.c proporcionada por paquete libusb (DL si el código fuente.)Compilación contra libusb-dev en Ubuntu

No funciona para decir lo menos.

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

Eso hace que falle, no hay libusb/libusb.h es usb.h, por lo que cambiar eso. Y falla de maneras nuevas e innovadoras.

he copiado el archivo a través de, exactamente, y lo llamó example.c

estoy usando estos comandos y variaciones:

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

Los errores que recibo al compilar son:

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; 

Al principio seguí un tutorial, y eso no se pudo compilar, más o menos de la misma manera, así que decidí probar el ejemplo proporcionado, y eso falló.

¿Alguien puede ayudarme? Explica lo que estoy haciendo mal, porque estoy perdido en este.

+0

¿Qué archivo, exactamente, copió y puso nombre a example.c? – nmichaels

+0

libusb-1.0.8/libusb-1.0.8/examples/lsusb.c Estoy a punto de intentar compilarlo en Ubuntu desde cero, como utilicé originalmente apt-get install libusb-dev –

+0

Solo una nota, que solía ser 'examples/lsusb.c' que podía obtener a través de' apt-get source libusb-1.0-0' en Ubuntu 11.04, ahora es aparentemente [examples/listdevs.c] (http://git.libusb.org /?p=libusb.git;a=blob;f=examples/listdevs.c;h=6ab891725a36424a7f59d5a8ff2c20a7deaec858;hb=HEAD). – sdaau

Respuesta

21

Esto es lo que tenía que hacer en Debian. Debería ser al menos similar en Ubuntu.

Instalar libusb-1.0-0-dev

En lugar de:

#include <libusb/libusb.h> 

hacer:

#include <libusb.h> 

compilar con:

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

Super cool, funcionó ... No sé qué significa pkg-config --libs, etc. ¿Podría explicar eso o vincular a alguna documentación? –

+2

Google it. Es una herramienta muy útil. En lugar de agregar indicadores de compilación manualmente, puede especificar qué bibliotecas desea, pasarlas a 'pkg-config' y generará todas las banderas necesarias. –

6

Just en la explicación de por qué su intento de r eplace libusb/libusb.h con usb.h falla: usb.h es un encabezado de linux-headers, no de libusb-dev. Necesita en su lugar #include <libusb.h>.

+0

Gracias, estaba en lo cierto. –

+0

Esta respuesta es completamente incorrecta. /usr/include/usb.h no es de linux-headers (que NO son para el espacio de usuario para vincular), sino más bien es el archivo de inclusión de la antigua libusb-0.1 API, mientras que /usr/include/libusb-1.0/libusb .h es el archivo de inclusión de la nueva API libusb-1.0. No son directamente intercambiables. –