1、libusb简介
libusb 是一个 C 库,提供对 USB 设备的通用访问。 它旨在供开发人员用于促进与 USB 硬件通信的应用程序的开发。其具有如下特点
可移植:使用单个跨平台 API,它提供对 Linux、macOS、Windows 等上的 USB 设备的访问。
用户模式:应用程序与设备通信不需要特殊权限或提升,无需驱动。
与版本无关:支持所有版本的 USB 协议,从 USB1.0 到 USB3.1,并且API接口保持不变,使得访问不同USB协议版本的USB设备时,开发工作轻便。
2、官网下载离线资源包
进入官网 libusb.info 的 Downloads 页
目前libusb项目托管在github中,用户根据自己需要选择适合的版本,可以选Last Release版本,也可以选择中间版本,但建议不要低于1.0.x。本文以版本V1.0.24(2020年12月更新)为例:
下载 libusb-1.0.24.tar.bz2
3、实验平台
操作系统: Ubuntu18.04
内核版本: 5.4.0
4、安装过程
<1> 拷贝资料包
拷贝步骤一中的离线包libusb-1.0.24.tar.bz2拷贝至系统中,我在 home/$(users)目录下新建了一个 Tools 文件夹,专门用来保存 Linux 下相关工具包。
<2> 解压压缩包
<3> 参考 INSTALL 说明
进入 libusb-1.0.24 文件夹进行配置安装
cd libusb-1.0.24
<4> 执行 ./configure 命令
注意该命令可以选择编译平台,编译的库版本也即运行平台,编译工具链,安装路径等,所以不是默认配置的用户需要在此项自行配置,常见配置选项有:
--build=x86_64-linux 指明软件的编译平台
--host=arm-linux 指明软件的运行平台
--prefix 指明软件的安装目录
CC=arm-linux-gcc 若为交叉编译那么需要指定该工具链
CXX=arm-linux-g++ 若为交叉编译那么需要指定该工具链
如果目标是在嵌入式arm处理器上应用,那么需要进行如下配置:
rambo@ubuntu:~/Tools/libusb-1.0.24$ ./configure --build=x86_64-linux --host=arm-linux --prefix=/usr/local/arm/libusb/ CC=arm-linux-gcc CXX=arm-linux-g++
如果目标是在X64的在处理器上应用,那么需要进行如下配置:
rambo@ubuntu:~/Tools/libusb-1.0.24$ ./configure --build=x86_64-linux
如上我计划运行libusb的目标cpu架构是 x86_64, 如果是其他架构,可以采用 i686,i386等。具体就根据机器来决定,关于架构也可以参见我们其他博文。
上述结果执行成功后,就会生成 Makefile 文件了,如果过程报错,则视情况而定,譬如:configure:error:“udev support requested but libudev not installed”
此时,需要在 ./configure 命令后加上 --disable -udev 就可以了。此时完整命令为:
rambo@ubuntu:~/Tools/libusb-1.0.24$ ./configure --build=x86_64-linux --disable-udev
<5> 执行 make
<6> 执行 sudo make install
<7> 确认安装结果
上述过程均成功执行的话,我们就可以在默认安装目录或者configure步骤--prefix指定的安装目录下找到 libusb 相关的头文件和库文件了。如下图:
补充说明:
在使用libusb1.0.x的低版本时还需要安装 libusb-compat 兼容包,其安装过程与libusb安装过程一样。成功配置并安装后,会在默认安装目录或者configure指定的安装目录下找到 libusb 相关的头文件libusb.h。是否需要安装,可查看系统中是否已包含该头文件。
5、运行libusb默认demo
如下所示:进入examples目录,执行make生成目标程序,然后运行即可。
6、安装完成
接下来就可以轻松使用libusb学习和开发usb产品。Enjoy~