环境
操作系统:Ubuntu 16.04
OpenCv版本:4.4.0
交叉工具链:aarch64-linux-gnu-gcc,gcc version 6.2.1
获取OpenCV源代码
这里推荐大家到网上找OpenCV的Linux版本安装包(.tar.gz结尾),不要github上clone(clone下来的没编译通过)
https://github.com/opencv/opencv/releases/tag/4.4.0
选择tar.gz源码
安装依赖库
#安装cmake
$ sudo apt-get install -y cmake
#安装图形化配置工具
$ sudo apt-get install cmake-qt-gui
安装交叉编译工具:
解压压缩包到/usr/local/arm/目录下
$ tar -zxvf gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu.tgz -C /usr/local/arm/
下面的一句添加到"~/.bashrc"的最后
export PATH=$PATH:/usr/local/arm/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu/bin
$ source ~/.bashrc
检测是否安装成功
aarch64-linux-gnu-gcc -v
编译源代码
新建build目录
$ cd opencv4.4.0/
创建build目录用于存放编译好的配置文件等信息
$ mkdir build
配置工具链
终端输入以下命令
cmake-gui
输入命令后弹出工具链配置界面
Where is the source code对应opencv的文件夹,
Where to build the binaries对应opencv存放编译好的配置文件等信息的文件夹
点击Configure,弹出编译方式选择对话框
点击Next
Operating System 输入Linux
Processor 输入 arm
C 路径:/usr/local/arm/aarch64-linux-gnu-gcc
C++路径:/usr/local/arm/aarch64-linux-gnu-g++
Target Root输入:/usr/local/arm/gcc-linaro-6.2.1-2016.11-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/lib
点击Finish
Search位置输入ZLIB, 把BUILD_ZLIB库选中(不选择会报错)
Search位置输入PNG, 把BUILD_PNG库选中(不选择会报错)
Search位置输入install,修改下opencv编译后存放的目录路径CMAKE_INSTALL_PREFIX
点击Configure
可能会报错“ADE: Download: v0.1.1f.zip”
参考https://blog.csdn.net/wzw_2008/article/details/106944407
点击Generate
进入build目录,执行编译
cd build
make -j8
编译过程中可能报错“fatal error: zlib.h: No such file or directory #include “zlib.h”
对于opencv4.0.0,修改最顶层的CMakeList.txt,找到ocv_include_directories(${OPENCV_CONFIG_FILE_INCLUDE_DIR}),并在下面添加:
ocv_include_directories(./3rdparty/zlib)
再次编译可能会报错“libopencv_imgcodecs.so.4.1.0: undefined reference to png_init_filter_functions_neon“
修改opencv4.4.0/3rdparty/libpng/CMakeLists.txt,在最前面添加
SET(ARM 1)
SET(ENABLE_NEON 1)
等待编译完成安装:
sudo make install
参考: