这也是把成熟应用移植到arm平台的一个典型案例。
mjpg-streamer可以将uvc摄像头图像流化用于远程查看,非常方便。
1. 建立交叉编译环境,这是arm平台移植应用必备的一步
一般我们安装的是64位系统,所以gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz这个安装包
sudo mkdir /usr/local/arm
sudo cp gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz /usr/local/arm/ -f
cd /usr/local/arm
sudo tar -vxf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz
好,解压完成了,设置路径,通过编辑/etc/profile来执行
加入路径
export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin
执行生效
source /etc/profile
安装必要的库
sudo apt-get install lsb-core lib32stdc++6
验证
arm-linux-gnueabihf-gcc -v
OK
2. 下载编译mjpg库
MJPG 库下载地址:Directory Listing of /files,本文档选择的 jpegsrc.v8b.tar.gz 这个版本,也可以使用文档同一目录下的 jpegsrc.v8b.tar.gz 压缩包,然后在 Ubuntu 创建文件夹 mjpg,
mkdir mjpg
将下载好的 jpegsrc.v8b.tar.gz 压缩包放到 mjpg 文件夹下,然后解压:
tar -vxf jpegsrc.v8b.tar.gz
然后在此目录下创建文件夹用来存放编译生成文件,
mkdir _jpeg_install
进入 jpeg-8b 文件夹,执行以下命令配置编译选项:
./configure --prefix=/home/ubuntu/work/mjpg/_jpeg_install --host=arm-linux-gnueabihf
参数说明:
--prefix=/home/ubuntu/work/mjpg/_jpeg_install:为上步创建的文件夹路径,根据实际填写。
--host=arm-linux-gnueabihf:为交叉编译工具的名字。
make
make install
顺利的话可以编译成功,得到库文件
关键来了,除了后面编译要用,还必须把/lib下的库文件拷贝到开发板的/lib目录下,否则后面运行会提示找不到libjpeg库
3. 编译mjpg-streamer应用
下载安装包
进入 mjpg-streamer/mjpg-streamer-code/mjpg-streamer/文件夹:执行 make clean
输入以下命令修改交叉编译工具:
find -name "Makefile" -exec sed -i "s/CC = gcc/CC = arm-linux-gnueabihf-gcc/g" {} \;
查看是否修改成功,grep "arm-linux-gnueabihf-gcc" * -nR
在plugins/input_uvc/Makefile中修改编译工具
第 15 行添加
CFLAGS += -I /home/ubuntu/work/mjpg/_jpeg_install/include/
第 25 行改为:
LFLAGS += -L /home/ubuntu/work/mjpg/_jpeg_install/lib/ -ljpeg
然后返回目录下 make编译
将.so文件拷贝到开发板/lib目录,文件夹copy到/bin目录,www拷贝到/opt目录
执行命令
mjpg_streamer -i "input_uvc.so -d /dev/video2 -r 320x240 -f 30 -yuv" -o "output_http.so -w /opt/www"报错可以忽略,
注意,imx6插上usb摄像头的设备号是/dev/video2