У меня есть небольшая программа на C, которая использует libusb 0.1
.
Я уже установил libusb-dev
(что в основном означает libusb 0.1: https://packages.ubuntu.com/de/xenial/libusb-dev ) и включил заголовок <usb.h>
.
Но компиляция с использованием gcc -Wall -lusb -o te923con te923con.c te923usb.c te923com.c
всегда дает сбой. Существует множество неопределенных ссылок, включая usb_find_busses
, usb_init
и usb_open
.
$ gcc -Wall -lusb -o te923con te923con.c te923usb.c te923com.c
/tmp/cc1TRIze.o: In function `find_te923':
te923usb.c:(.text+0x9): undefined reference to `usb_find_busses'
te923usb.c:(.text+0xe): undefined reference to `usb_find_devices'
te923usb.c:(.text+0x13): undefined reference to `usb_get_busses'
/tmp/cc1TRIze.o: In function `te923_handle':
te923usb.c:(.text+0xf9): undefined reference to `usb_init'
te923usb.c:(.text+0x144): undefined reference to `usb_open'
te923usb.c:(.text+0x191): undefined reference to `usb_get_driver_np'
te923usb.c:(.text+0x1ab): undefined reference to `usb_detach_kernel_driver_np'
te923usb.c:(.text+0x1bc): undefined reference to `usb_set_configuration'
te923usb.c:(.text+0x1fe): undefined reference to `usb_claim_interface'
te923usb.c:(.text+0x23d): undefined reference to `usb_set_altinterface'
/tmp/cc1TRIze.o: In function `te923_close':
te923usb.c:(.text+0x2b3): undefined reference to `usb_release_interface'
te923usb.c:(.text+0x2bf): undefined reference to `usb_close'
/tmp/ccxL1A67.o: In function `read_from_te923':
te923com.c:(.text+0x19e): undefined reference to `usb_control_msg'
te923com.c:(.text+0x28b): undefined reference to `usb_interrupt_read'
collect2: error: ld returned 1 exit status
Makefile:5: recipe for target 'te923con' failed
make: *** [te923con] Error 1
Я не понимаю причину этих ошибок. У кого-нибудь есть идеи?
У меня была аналогичная проблема. Я решил это
Вместо
gcc -lusb -o outfile input.c
Я использовал
gcc -o outfile input.c -lusb
и это сработало