在Mac OS X中链接libusb

3
我有一段非常简单的代码,想要编译。我对从命令行使用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;
}

你能在每个案例中包含GCC的完整输出吗?这些错误消息就像大的线索,告诉你如何解决问题。不过,第一次调用GCC没有用,所以不必费心。 - David Grayson
@DavidGrayson 很抱歉。 - user342706
2个回答

2
所以我遇到了类似的问题,由于某种原因,gcc在OS X上的默认搜索路径中不包括/usr/local/lib。快速解决方法是添加:
-lusb-1.0

添加gcc命令并编译即可。


1
你没有告诉gcc在哪里查找头文件。这可以通过在gcc编译命令行中使用-I选项来完成。
例如:
gcc -I /usr/local/include -o xout usbtest.c

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

1
如果他只指向包含目录,那么他很可能需要调整他的#include#include <libusb-1.0/libusb.h> - John Szakmeister
@Mark 这解决了缺失文件的问题。谢谢。顺便说一下...这是Homebrew创建的链接:lrwxr-xr-x 1 kyle admin 41 Dec 5 22:38 libusb-1.0 -> ../Cellar/libusb/1.0.9/include/libusb-1.0 - user342706
@KyleRogers 那个在哪个目录下? - mmmmmm
@Mark 我现在遇到了不同的错误。你有什么想法吗?Undefined symbols for architecture x86_64: "_libusb_get_device_list", referenced from: _main in usbtest-7VJQQT.o "_libusb_init", referenced from: _main in usbtest-7VJQQT.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) - user342706
@Mark 我知道这段代码可以运行且有效,因为我已经在XCode中测试过了。我只是想学习一下如何使用gcc和命令行。 - user342706
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接