gpt4 book ai didi

c - 在 linux 上用 libusb 编译 c 代码的问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:51:44 27 4
gpt4 key购买 nike

我正在尝试将 libusb 用于一个项目,但我无法使该库正常工作。这是我正在尝试编译的一些源代码。它没有做任何特别的事情。它只是一个获取 USB 驱动程序列表然后释放它的虚拟程序。

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

int main(int argc, char *argv[]){

struct libusb_device **devs;
struct 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);

if(list < 0)
{

fprintf(stderr, "error in getting device list\n");
libusb_free_device_list(devs, 1);
libusb_exit(context);
exit(1);
}


libusb_free_device_list(devs, 1);
libusb_exit(context);

return 0;

}

我用

编译

gcc -o test test.c -lusb

我得到了错误

/tmp/cc2hwzii.o: in function 'main:
test.c:(.text+0x24): undefined reference to 'libusb_init'
test.c:(.text+0x59): undefined reference to 'libusb_get_device_list'
test.c:(.text+0x8e): undefined reference to 'libusb_free_device_list'
test.c:(.text+0x9f): undefined reference to 'libusb_exit'
collect2: error: ld returned 1 exit status

我正在运行 ubuntu 14.04.3我已经通过 sudo apt-get install libusb-dev 安装了 libusb我搜索了我的头文件,它叫做 usb.h我已经查看以确保我有正确的标志,它是 -lusb

有什么想法吗?我很感激你的帮助。如果需要任何更多信息,请询问。

最佳答案

libusb_init 包含在 libusb-1.0 中。你必须安装 libusb-1.0-0-dev

$ sudo apt-get install libusb-1.0-0-dev
$ gcc -o test test.c -lusb-1.0

/usr/lib/x86_64-linux-gnu/pkgconfig/libusb.pc 包含在 libusb-dev 中说版本是 0.1.12

/usr/lib/x86_64-linux-gnu/pkgconfig/libusb-1.0.pc 包含在 libusb-1.0-0-dev 中表示版本为 1.0。 17.

http://www.libusb.org/说 0.1 是遗留的,API 似乎与 1.0 不同。

关于c - 在 linux 上用 libusb 编译 c 代码的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32085111/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com