在linux上使用libusb编译c代码时出现的问题

在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

我正在尝试将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;

}
我正在运行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