c - 无法将 libusb 链接到 Mac 上的 C 项目

标签 c eclipse macos eclipse-cdt libusb

我已经使用 Homebrew 在 Mac OS X 上安装了 libusb,位于

/usr/local/Cellar/libusb

它的看起来如下:

.
└── 1.0.9
    ├── AUTHORS
    ├── COPYING
    ├── ChangeLog
    ├── INSTALL_RECEIPT.json
    ├── NEWS
    ├── README
    ├── TODO
    ├── include
    │   └── libusb-1.0
    │       └── libusb.h
    └── lib
        ├── libusb-1.0.0.dylib
        ├── libusb-1.0.a
        ├── libusb-1.0.dylib -> libusb-1.0.0.dylib
        └── pkgconfig
            └── libusb-1.0.pc

我有以下代码:

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

int main(void) {
    puts("USB Test v0.0.1");

    //libusb_device **devices;
    libusb_context *ctx = NULL;
    int result;
    result = libusb_init(&ctx);

    if (result < 0) {
        puts("USB initialization error!");
        return EXIT_FAILURE;
    }

    return EXIT_SUCCESS;
}

...但是编译会产生以下结果:

22:08:26 **** Incremental Build of configuration debug for project usb_test ****
make all 
Building target: usb_test
Invoking: MacOS X C Linker
gcc -L/usr/local/Cellar/libusb/1.0.9/lib -o "usb_test"  ./src/usb_test.o   -l/usr/local/Cellar/libusb/1.0.9/lib/libusb-1.0.a
ld: library not found for -l/usr/local/Cellar/libusb/1.0.9/lib/libusb-1.0.a
collect2: ld returned 1 exit status
make: *** [usb_test] Error 1

22:08:26 Build Finished (took 68ms)

为什么找不到 libusb 库?

最佳答案

某处你有一个错误的链接器标志。

 -l/usr/local/Cellar/libusb/1.0.9/lib/libusb-1.0.a

应该只是:

 /usr/local/Cellar/libusb/1.0.9/lib/libusb-1.0.a

在这种情况下你不需要指定链接器搜索路径,所以 -L/usr/local/Cellar/libusb/1.0.9/lib 不需要。

如果你不想静态链接到那个libusb-1.0.a,而是链接到.dylib,你需要保留-L/usr/local/Cellar/libusb/1.0.9/lib 并替换

 -l/usr/local/Cellar/libusb/1.0.9/lib/libusb-1.0.a

 -lusb-1.0

关于c - 无法将 libusb 链接到 Mac 上的 C 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17457271/

相关文章:

c - 我在这个终端做什么? : C Programming

java - 我更改了jre,现在所有程序都有错误

bash - 与此批处理等效的 Bash 命令

python - 在 Mac/Python 上安装 basemap

我仍然可以在 macOS Mojave 下使用 gcc 使用 OpenGL 处理 C 项目吗?

c - Little-endian 字节顺序(在 C 中)

c++ - 使用 open() 在文件的特定位置写入

c - _popen 在同时具有 stdout 和 stdin 的 Windows 中

eclipse - 无法在 Eclipse 中创建网络连接

java - tomcat中的引导类路径