1.什么是libuvc ?
libuvc 是一个基于 host 端的跨平台的 uvc 开源库,小巧简洁。目前支持
- h264/mjpeg/yuv
- 完整的 uvc 协议支持(控制/流)
- 扩展单元协议自定义。
libuvc 是一个基于libusb 之上的协议,对于想学uvc的朋友,可以快速入手其源码。
本文对其源码,不做过多分析,只对其环境构建做详细介绍。
2.安装准备
- cmake
- git
- gcc
- pkg-config
- libusb
- libuvc
默认cmake/git/gcc/pkg-config 已安装,本文只对libusb 和libuvc 进行介绍。
3.安装 libusb
libusb 可以通过命令行安装,本文将从源码编译安装,方便大家后续在编的平台交叉编译。
3.1下载
git clone https://github.com/libusb/libusb.git
3.2 编译
- 安装第三方库
sudo apt-get install autoconf libtool libudev-dev
- 执行自动配置脚本,执行完成后会生成configure, INSTALL
./autogen.sh
- 配置configure(工具链, 安装路径,编译选项等) 见 INSTALL
PWD=`pwd` rm -r $PWD/out mkdir $PWD/out PREFIX_DIR=$PWD/out # 这里只配置了 安装路径 ./configure --prefix=$PREFIX_DIR # 编译及安装 make && make install
3 .编译成功如下:
4. libuvc
4.1 下载源码
git clone https://github.com/libuvc/libuvc.git
4.2 编译
- 打开README。可以看到安装编译目录
- 指定第三方库路径
1.1 libusb
# 设置环境变量,并将libusb-1.0.pc 复制到改路径下 export PKG_CONFIG_PATH=/home/wxyang/work/github/usb/3rd/pkgconfig # 查找库(测试) pkg-config --libs libusb-1.0 # 查找头文件(测试) pkg-config --cflags libusb-1.0
1.2 opencv 由于opecv 依赖的三方库太多,故不从源码介绍安装,直接通过apt-get 安装
sudo apt-get install libopencv-dev python-opencv # 测试 pkg-config --cflags opencv
1.3 libjpeg
可选,如果要支持mjpeg 编码需要安装,也可通过ffmpeg解码
- 编译安装
#!/bin/bash PWD=`pwd` rm $PWD/build mkdir $PWD/build mkdir $PWD/out BUILD_DIR=$PWD/build PREFIX_DIR=$PWD/out cd BUILD_DIR # 指定安装路径 cmake -DCMAKE_INSTALL_PREFIX=$PREFIX_DIR -DBUILD_TEST=ON -DBUILD_EXAMPLE=ON .. # 这里只配置了 安装路径 make && make install ~
5. 测试
- 修改 makefile
- 将编好的libuvc库 放到指定的位置并设置好环境变量 PKG_CONFIG_PATH
- 3rd/pkgconfig 下放编译好的.pc 便于pkg-config 能找到
- libuvc.pc 里面指定了真正的库文件目录
- testuvc 里面是测试simple ,直接从libuvc里面拷贝一个例子
- 注意使用pkg-congfig 默认是动态链接,如果想要镜头链接,将指定库文件里面的动态库全部删掉,就会自动静态链接。
6. 总结
本文记录一下在构建libuvc 的时候,所遇到的一些坑.整个过程下来,如果一个人折腾还是挺花时间。同时回顾一下第三库的构建过程,方便读者快速在其他平台编译。