在Mac OS X中链接libusb

时间:2013-12-06 05:41:06

标签: macos gcc osx-mavericks libusb libusb-1.0

我正在尝试编译这段非常简单的代码。我从命令行对GCC相当新,所以请原谅我。我和GCC尝试了很多不同的东西,但我仍然无法编译。我安装了libusb。如何编译这段代码?

的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;
}

2 个答案:

答案 0 :(得分:2)

您没有告诉gcc在哪里查找头文件。这是通过gcc命令行上的-I选项进行编译的。

e.g。

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

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

答案 1 :(得分:1)

所以我遇到了类似的问题,由于某些原因,gcc在OS X的默认搜索路径中没有包含/ usr / local / lib。快速解决方法是添加:

-lusb-1.0

到gcc命令,它应该编译。