背景:
由于手上有一块rk3568的开发板,需要运行yolov5跑深度学习模型,但是原有的opencv不能对x264格式的视频进行解码,这里就需要将ffmpeg+x264编译进opencv。
但是开发板算力有限,所以这里采用在windows下,安装ubuntu的虚拟机,在虚拟机上进行交叉编译,得到arm 版的opencv。
pc主机:windows10
虚拟机:ubuntu-18.04
目标机: armv8
目标芯片:rk3568
目标编译环境: aarch64-linux-gnu-gcc/aarch64-linux-gnu-g++
注:以下所有的环境安装都是在虚拟机上运行的,目标ARM平台需要另外安装运行环境
目录
1、安装交叉编译器和编译工具
sudo apt-get install g++-aarch64-linux-gnu
sudo apt-get install gcc-aarch64-linux-gnu
sudo apt-get install cmake-gui cmake
sudo apt-get install build-essential
sudo apt-get install vim
sudo apt install pkg-config
2、下载+编译依赖的第三方软件
zlib官网:http://www.zlib.net/
libjpeg下载地址:http://www.ijg.org/files/
libpng下载地址:http://www.libpng.org/pub/png/libpng.html
yasm下载地址:http://yasm.tortall.net/Download.html
x264下载地址:http://www.videolan.org/developers/x264.html
libxvid下载地址:http://ftp.br.debian.org/debian-multimedia/pool/main/x/xvidcore/
ffmpeg下载地址:http://ffmpeg.org/download.html
这里将对应的软件下载下来就行,软件版本的话,我这边选的稍微稳定的版本
软件版本我这边的截图如下:
3、设定第三方软件统一的安装路径和编译安装软件
为什么要设定安装路径?一是方便管理,当依赖的第三方软件都编译成功后,可以统一将所有的lib库文件和include
头文件复制到目标文件夹
为什么要交叉编译安装软件?因为我们要编译arm版本的opencv,该opencv依赖的第三方软件也需要是arm版本的,由于宿主主机是x86架构的,所以只能交叉编译安装
注:编译安装的命令行参数配置
--host: 指明目标平台
--prefix: 指明编译安装的位置
--enable-shared 生成动态库
--enable-static 生成静态库
注: