我已经使用 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/