Opencv4.2+ffmpeg交叉编译aarch64运行环境
参考文章1.https://blog.csdn.net/nila101/article/details/87367595
2.https://blog.csdn.net/lijiyu0219/article/details/105842255
一、交叉编译环境安装
可以直接apt-get isntall gcc-aarch64-linux-gnu 安装,也可以从官网下载。这里建议从官网下载安装,自定义安装路径。
建议直接从 linaro 的官网下载相应版本的 gcc-linaro 交叉编译工具,并直接选择带有二进制的文件,即在官网入口处选择 binaries 路径,该文件夹下面包含各种版本的已经编译好的 aarch64-linux-gnu-gcc 二进制可执行程序

x86_64 代表宿主机是64位的,其他的则都为32位的
_be 代表是大端模式,不带该字段的为小端模式
下载完成之后,解压,压缩包里的 bin 目录下,就有我们需要的交叉编译器,直接使用即可。
二、编译opencv所需的三方库
参考https://blog.csdn.net/nila101/article/details/87367595,安装所需的三方库,当然不需要ffmpeg的可跳过。
安装完后要注意,pkg-config ****.so --libs检查一下是否能找到所有已安装的库。另外file ***.so 查看是否已编译为aarch64环境下的库。
![]()

三、cmake-gui编译opencv
cmake-gui配置opencv编译环境时主要问题
1.zlib头文件zlib.h找不到,可在cmake-gui界面勾选Advanced,手动设置ZLIB_INCLUDE_DIR路径为自己的zlib安装路径。

2.确保自己的交叉编译工具路径设置正确

3.libavcodec,libavformat,等为no的情况,
修改opencv-3.4.4/platforms/linux/aarch64-gnu.toolchain.cmake,尤其注意框红的那一行,因为opencv3.4以后的版本,禁用了pkg_config_found,所以通过pkg_config查找三方库时需要将OPENCV_ENABLE_PKG_CONFIG设为ON。并且在cmake-gui界面手动设置PKG_CONFIG_PATH路径,这个参数在点击configure之前完成,从Add Entry设置。


修改修改 opencv-4.2.0/modules/videoio/cmake/detect_ffmpeg.cmake,这是参考链接2做的修改,但是只修改下面的部分就行。 并且都改为连接动态库。

4.ffmpeg选项为no的情况
如果libavcodec,libavformat等都为YES,ffmpeg仍然为no,查看输出错误信息。我这里显示xvid.so,x264.so库文件找不到,引用的库函数未定义。
在cmake界面手动设置三方库路径,设置为自己安装路径

最后运行命令make,make install 安装完成.