2011-10-12 1 views
8

에 libusb를-DEV에 대해 컴파일 (소스 코드를 DL을 경우입니다.)내가 libusb를 패키지로 제공되는 예제 libusb.c 컴파일하려고 우분투

그것은 적어도 말을 작동하지 않습니다. 실패를 야기

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

, 그것은 usb.h의 더 libusb/libusb.h가 없다, 그래서 나는 그것을 변경할 수 있습니다. 그리고 그것은 새롭고 혁신적인 방식으로 실패합니다. 내가 정확히 이상의 파일을 복사하고, 그것이 내가이 명령 및 변형 사용하고

을 example.c라는 이름의 한

:

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

컴파일 할 때 내가 얻을 오류는 다음과 같습니다

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; 

처음에는 튜토리얼을 따라 갔지만 컴파일 할 때와 거의 같은 방식으로 컴파일에 실패했습니다. 따라서 제공된 예제를 시험해보기로했습니다.

아무도 도와 줄 수 있습니까? 내가 뭘 잘못하고 있는지 설명해주세요. 나는 이걸 잃어 버렸습니다.

+0

정확히 어떤 파일을 복사하여 example.c 파일에 복사 했습니까? – nmichaels

+0

libusb-1.0.8/libusb-1.0.8/examples/lsusb.c 처음에는 우분투에서 컴파일하려고합니다. 원래는 apt-get install libusb-dev를 설치했습니다. –

+0

Ubuntu 11.04에서'apt-get source libusb-1.0-0'을 통해 얻을 수있는'examples/lsusb.c'로 사용되었지만 지금은 분명히 [examples/listdevs.c]입니다. (http://git.libusb.org /?p=libusb.git;a=blob;f=examples/listdevs.c;h=6ab891725a36424a7f59d5a8ff2c20a7deaec858;hb=HEAD). – sdaau

답변

21

이것은 데비안에서해야 할 일입니다. 그것은 우분투에서 적어도 유사해야합니다.

대신 libusb-1.0-0-dev

설치 :

#include <libusb/libusb.h> 

는 수행

#include <libusb.h> 

컴파일을 함께 :

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

멋지다. 그게 효과가있다 ... 나는 pkg-config --libs 등의 것들이 무엇을 의미하는지조차 모른다. 설명하거나 일부 문서에 링크 할 수 있습니까? –

+2

Google 그것입니다. 매우 유용한 도구입니다. 수동으로 컴파일 플래그를 추가하는 대신 원하는 라이브러리를 지정하고'pkg-config'로 넘겨 주면 모든 필요한 플래그가 출력됩니다. ' –

6

그냥 설명 엔 왜 R로 시도 예 : 을 usb.h과 함께 사용하지 못했습니다. usb.hlibusb-dev이 아닌 linux-headers의 헤더입니다. 대신 #include <libusb.h>이 필요합니다.

+0

감사합니다. –

+0

이 답변은 완전히 잘못되었습니다. /usr/include/usb.h는 linux-headers (사용자 공간이 아닌 링크)에서 가져온 것이 아니라 이전 libusb-0.1 API의 포함 파일이며 /usr/include/libusb-1.0/libusb입니다. .h는 최신 libusb-1.0 API의 포함 파일입니다. 그들은 직접 상호 교환 할 수 없습니다. –