libusb 程序无法编译

libusb 程序无法编译

我正在尝试编译一个使用libusbUbuntu 12.04 中的库的程序。

我已经安装了libusb-1.0-0-dev。但是,当我尝试编译如下程序时:

#include<usb.h>
#include<stdio.h>
#include<libusb-1.0/libusb.h>
int main()
{
       libusb_init(NULL);            
       return 0;
}

它给了我一个错误的说法

/tmp/ccb75YtE.o: In function 'main':
usb.c:(.text+0x11): undefined reference to 'libusb_init'
collect2: ld returned 1 exit status

我正在使用命令cc <file name> -lusb来编译它。可能是什么问题?

答案1

尝试改变—lusb-lusb-1.0, 像这样:
$ cc <file name> -lusb-1.0

答案2

您必须将-lusb命令传递给链接器。您包括了标头,但还必须将代码链接到 libusb 库(也必须安装)

答案3

只是想感谢关于将 lusb 更改为 lusb 1.0 的评论,我没有更改标题,但安装了 libusb-1.0(在过时的 32 位机器上可以找到);我现在使用的应用程序可以编译,更重要的是,我只是想包含一些关于我遇到的问题的背景信息,这样我可能会帮助其他处于同样境地的人。

基本上,我已经成功编译了 ttwatch(一个适用于 Tomtom spark 和其他手表的应用程序)。我在现代 PC 上尝试了所有我能想到的方法,但就是无法编译。

github 链接在这里 https://github.com/ryanbinns/ttwatch

问题是我认为该应用程序最初是在 32 位机器上编译的,所以我最后做的是运行一个 virtualbox 会话并在其上安装了一个旧的 ubuntu 操作系统(如果我没记错的话是 Xenial Xeru)我找到并安装了 libusb-1.0(在现代操作系统上找不到)然后就好了!它编译成功了!

希望这对处于同样境况的人有所帮助。

USB 是否通过 VirtualBox 会话连接到手表还有待观察。

相关内容