gcc - неопределенная ссылка на libusb_init - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь скомпилировать кусок кода, который использует libusb:

#include <stdio.h>
#include <libusb-1.0/libusb.h>
#include <assert.h>

int main(void) {
    libusb_context *context = NULL;
    int rc = 0;

    rc = libusb_init(&context);
    assert(rc == 0);

    libusb_exit(context);
    return 0;
}

При компиляции с gcc -lusb -lusb-1.0 sample.c -o sample появляются следующие ошибки:

/tmp/ccr65JBT.o: In function `main':
sample.c:(.text+0x2e): undefined reference to `libusb_init'
sample.c:(.text+0x62): undefined reference to `libusb_exit'
collect2: error: ld returned 1 exit status

Чтобы убедиться, что libusb доступен в моей системе:

raven@enforcer:~/sample$ pkg-config --libs libusb-1.0
-lusb-1.0
raven@enforcer:~/sample$ pkg-config --libs libusb
-lusb

Я использую Ubuntu 18.04 с gcc 7.3.0-16ubuntu3, как это исправить?

1 Ответ

0 голосов
/ 02 июля 2018

Получилось, добавив флаги после .c: gcc sample.c -o sample -lusb -lusb-1.0

Автоинструмент: sample_LDADD вместо sample_LDFLAGS

Спасибо Феликсу Пальмену.

...