gcc-对`libusb_init'的未定义引用

时间:2018-07-02 10:40:57

标签: c gcc libusb libusb-1.0

我正在尝试编译使用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

我正在使用gcc 7.3.0-16ubuntu3运行Ubuntu 18.04,如何解决?

1 个答案:

答案 0 :(得分:2)

通过在.c之后附加标志来使其正常工作:gcc sample.c -o sample -lusb -lusb-1.0

自动工具:sample_LDADD而非sample_LDFLAGS

感谢菲利克斯·帕尔默(Felix Palmen)。