我正在尝试编译一个使用libusb
Ubuntu 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 会话连接到手表还有待观察。