在linux上使用libusb编译c代码时出现的问题
我正在尝试将libusb用于一个项目,但无法使库正常工作。这是我正在编译的一些源代码。它没有什么特别的作用。它只是一个虚拟程序,获取USB驱动程序列表,然后释放它在linux上使用libusb编译c代码时出现的问题,c,linux,libusb,C,Linux,Libusb,我正在尝试将libusb用于一个项目,但无法使库正常工作。这是我正在编译的一些源代码。它没有什么特别的作用。它只是一个虚拟程序,获取USB驱动程序列表,然后释放它 #include <stdio.h> #include <usb.h> #include <stdlib.h> int main(int argc, char *argv[]){ struct libusb_device **devs; struct libusb_conte
#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;
}
我正在运行ubuntu 14.04.3
我已经通过sudo安装了libusb apt get install libusb dev
我已经搜索了我的头文件,它叫做usb.h
我一直在寻找,以确保我有正确的国旗和它的-lusb
有什么想法吗?我很感激你的帮助。如果需要更多信息,请询问。您忘记包含定义函数的文件,例如libusb_init。您是否尝试包含libusb.h?您忘记包含定义函数的文件,例如libusb_init。您尝试过包含libusb.h吗?那些
libusb\u 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
表示0.1是遗留的,并且似乎API与1.0不同。那些
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
表示0.1是遗留的,并且似乎API与1.0不同。请正确设置代码格式。看起来一团糟。请正确格式化代码。看起来一团糟。这不在usb.h文件中吗?@MathewWright一分钟的搜索显示它是
libusb.h
。这不在usb.h文件中吗?@MathewWright一分钟的搜索显示它是libusb.h
。我想你是对的。顺便说一句,libusb-dev和libusb-1.0.0-dev有什么区别?为什么您知道它来自于特定的1.0.0包?非常感谢。关于这一点,有很多不同的线索,对于不同的解决方案,它们都有不同的答案。我很感谢对linux的帮助。@artm我研究了不同之处。@artm我有一台arch linux机器,并注意到其中有两个版本的libusb
,并确认libusb\u free\u device\u list
符号包含在nm-D libusb-1.0中。因此.0
我认为你是对的。顺便说一句,libusb-dev和libusb-1.0.0-dev有什么区别?为什么您知道它来自于特定的1.0.0包?非常感谢。关于这一点,有很多不同的线索,对于不同的解决方案,它们都有不同的答案。我很感谢对linux的帮助。@artm我研究了一下区别。@artm我有一台arch linux机器,注意到里面有两个版本的libusb
,并确认libusb\u免费设备\u列表
符号包含在nm-D libusb-1.0中。so.0