2011-10-12 37 views
8

Tôi cố gắng để biên dịch ví dụ libusb.c cung cấp bởi gói libusb (nếu bạn dl mã nguồn.)Biên dịch chống lại libusb-dev trên Ubuntu

Nó không làm việc để nói rằng ít nhất.

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

Đó làm cho nó thất bại, không có libusb/libusb.husb.h, vì vậy tôi thay đổi điều đó. Và nó không thành công theo những cách mới mẻ và sáng tạo.

tôi đã sao chép các tập tin trên, chính xác, và đặt tên nó là example.c

Tôi đang sử dụng các lệnh này và các biến thể:

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

Các lỗi tôi nhận được khi biên dịch là:

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; 

Lúc đầu, tôi đã làm theo hướng dẫn và không thể biên dịch nhiều hơn hoặc ít hơn theo cùng một cách, vì vậy tôi đã quyết định chỉ thử ví dụ được cung cấp và không thành công.

Có ai có thể giúp tôi không? Giải thích những gì tôi đang làm sai, gây ra tôi bị mất trên này.

+0

Bạn đã sao chép chính xác và đặt tên cho tệp nào? – nmichaels

+0

libusb-1.0.8/libusb-1.0.8/example/lsusb.c Tôi sắp thử biên dịch nó trên ubuntu từ đầu, vì tôi đã sử dụng apt-get install libusb-dev –

+0

Chỉ cần lưu ý rằng đã từng là 'example/lsusb.c' mà tôi có thể nhận được thông qua' apt-get source libusb-1.0-0' trong Ubuntu 11.04, bây giờ là [example/listdevs.c] (http://git.libusb.org /?p=libusb.git;a=blob;f=examples/listdevs.c;h=6ab891725a36424a7f59d5a8ff2c20a7deaec858;hb=HEAD). – sdaau

Trả lời

21

Đây là những gì tôi phải làm trên Debian. Nó phải có ít nhất là tương tự trong Ubuntu.

Install libusb-1.0-0-dev

Thay vì:

#include <libusb/libusb.h> 

làm:

#include <libusb.h> 

Compile với:

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

Siêu mát mẻ, đã hoạt động ... Tôi không biết những gì pkg-config --libs vv công cụ thậm chí có nghĩa là. Bạn có thể giải thích rằng hoặc liên kết đến một số tài liệu? –

+2

Google. Đó là công cụ rất hữu ích. Thay vì thêm các cờ biên dịch theo cách thủ công, bạn có thể chỉ định thư viện nào bạn muốn, chuyển chúng tới 'pkg-config' và nó sẽ xuất tất cả các cờ cần thiết.' –

6

Chỉ en giải thích lý do tại sao bạn cố gắng để r eplace libusb/libusb.h với usb.h không thành công: usb.h là tiêu đề từ linux-headers, không phải từ libusb-dev. Thay vào đó, bạn cần #include <libusb.h>.

+0

Cảm ơn bạn đã đúng. –

+0

Câu trả lời này hoàn toàn không chính xác. /usr/include/usb.h không phải từ các tiêu đề linux (không phải cho không gian người dùng để liên kết), mà đúng hơn là tệp include cho libusb-0.1 API cũ hơn, trong khi /usr/include/libusb-1.0/libusb .h là tệp bao gồm cho API libusb-1.0 mới hơn. Họ không trực tiếp hoán đổi cho nhau. –

Các vấn đề liên quan