c - gcc - 对“libusb_init”的未定义引用
问题描述
我正在尝试编译一段使用 libusb 的代码:
#include <stdio.h>
#include <libusb-1.0/libusb.h>
#include <assert.h>
int main(void) {
libusb_context *context = NULL;
int rc = 0;
rc = libusb_init(&context);
assert(rc == 0);
libusb_exit(context);
return 0;
}
编译时gcc -lusb -lusb-1.0 sample.c -o sample
出现以下错误:
/tmp/ccr65JBT.o: In function `main':
sample.c:(.text+0x2e): undefined reference to `libusb_init'
sample.c:(.text+0x62): undefined reference to `libusb_exit'
collect2: error: ld returned 1 exit status
确保 libusb 在我的系统上可用:
raven@enforcer:~/sample$ pkg-config --libs libusb-1.0
-lusb-1.0
raven@enforcer:~/sample$ pkg-config --libs libusb
-lusb
我正在使用 gcc 7.3.0-16ubuntu3 运行 Ubuntu 18.04,如何修复?
解决方案
通过在 .c 后附加标志使其工作:gcc sample.c -o sample -lusb -lusb-1.0
自动工具:sample_LDADD
代替sample_LDFLAGS
感谢菲利克斯帕尔门。
推荐阅读
- android - 在约束布局中以编程方式设置 TextView 的重力
- java - 即使在将 int 转换为 String 之后,Java 流也会给出“无与伦比的类型:int 和 String”
- ios - UICollectionView .reloadData() 只显示部分
- html - 如何使用 css 向自定义收音机添加刻度?
- java - 附加到 Java 中的链表
- string - Haskell - 非数字字符串作为整数
- swift - 更新数组中的电话联系人单项
- python - python中列表的分离
- swift - 快速拆分字符串以从 URL 获取文件类型
- php - 随机数组中的元素