3

我正在尝试编译这段非常简单的代码。我从命令行对GCC相当陌生,所以请原谅我。我用 GCC 尝试了很多不同的东西,但我仍然无法编译它。我确实安装了libusb。我怎样才能让这段代码编译?

图书馆:

anything:usb mymac$ brew list libusb
/usr/local/Cellar/libusb/1.0.9/include/libusb-1.0/libusb.h
/usr/local/Cellar/libusb/1.0.9/lib/libusb-1.0.0.dylib
/usr/local/Cellar/libusb/1.0.9/lib/pkgconfig/libusb-1.0.pc
/usr/local/Cellar/libusb/1.0.9/lib/ (2 other files)
anything:usb mymac$

GCC 尝试(全部失败):

gcc -o xout usbtest.c
gcc -o xout usbtest.c -lusb-1.0
gcc -L/usr/local/Cellar/libusb/1.0.9/lib -o xout usbtest.c -lusb-1.0

所有尝试的错误:

usbtest.c:3:10: fatal error: 'libusb.h' file not found
#include <libusb.h>

代码:

#include <stdio.h>
#include <stdlib.h>
#include <libusb.h>

int main(int argc, const char * argv[])
{
    libusb_device **devs;
    libusb_context *context = NULL;

    size_t list;
    //size_t i;
    int ret;

    ret = libusb_init(&context);

    if(ret < 0)
    {
        perror("libusb_init");
        exit(1);
    }

    list = libusb_get_device_list(context, &devs);

    printf("There are %zd devices found\n", list);

    return 0;
}
4

2 回答 2

2

所以我遇到了类似的问题,由于某种原因,gcc 在 OS X 上的默认搜索路径中不包含 /usr/local/lib。快速修复是添加:

-lusb-1.0

到 gcc 命令,它应该编译。

于 2014-01-06T22:39:01.493 回答
1

您没有告诉 gcc 在哪里查找头文件。这是通过-Igcc 命令行上用于编译的选项来完成的。

例如

gcc -I /usr/local/include -o xout usbtest.c

我认为 Homebrew 确实提供了从酒窖内部到 /usr/local 的符号链接

于 2013-12-06T13:19:43.040 回答