Data:2019-06-13
Theme:海思3519 OpenCV4.0 移植
1.编译器:arm-himix600-linux交叉编译工具
2.opencv4.0.1源码
(假设所需组件已经安装过了)
这里需要安装cmake3以及cmake-gui
下载cmake-3.9.2源码:wget https://cmake.org/files/v3.9/cmake-3.9.2.tar.gz
解压源码安装:
cd cmake-3.9.2
./configure
sudo make
make install
cmake-gui安装: sudo apt-get install cmake3-qt-gui
新建build目录和install目录:mkdir build
mkdir install-hisi
cd build
cmake-gui
进入配置界面:
选择好对应的源码路径和build路径,点击configure按照以下选项配置对应编译环境:
点击next进入交叉编译工具配置界面:
分别填上工具链对应位置:
Operating System:arm-hisiv600-linux
compilers c:/opt/hisi-linux/x86-arm/arm-hisiv600-linux/target/bin/arm-hisiv600-linux-gcc
compilers c++:/opt/hisi-linux/x86-arm/arm-hisiv600-linux/target/bin/arm-hisiv600-linux-g++
target root:/opt/hisi-linux/x86-arm/arm-hisiv600-linux/target/bin
点击finish,等configure完成后需要修改相应配置(具体一些配置选项可自行参考网上介绍,这里不过多列举。):
取消WITH_CUDA
取消WITH_TIFF
设置安装路径CMAKE_INSTALL_PREFIX=/home/zyy/opencv-4.0.1/install-hisi
设置CMAKE_BUILD_TYPE=RELEASE
勾选advanced选项,搜索FLAG找到CMAKE_EXE_LINKER_FLAGS,加上-lpthread -lrt –ldl,防止后面编译出错
修改完成后,点击generate,成功后即可关闭界面,执行make进行编译工作。
编译过程中可能会遇到如下错误:
问题一:
解决方法是找到对应的common.c 文件添加#define HAVE_PTHREAD
问题二:
网上说:“是系统里面没有安装 zlib开发包.执行 apt-get install zlib1g-dev 。然后重新编译就解决了”。
但是这个对交叉编译的没有用。
这个版本的OpenCV已经包含了第三方的库
3rdparty
此处的解决办法如下:
修改顶层目录的
CMakeLists.txt
在654行增加以上代码: ocv_include_directories(./3rdparty/zlib/)
按照上面的方法进入到build 路径重新执行Cmake
问题三:
该问题应该是:64位ubuntu不兼容32bit工具问题
解决办法如下:
sudo apt-get update
sudo apt install lib32z1-dev
sudo apt-get install lib32z1 lib32ncurses5
sudo apt-get install lib32stdc++6
sudo apt-get install lib32bz2-1.0
sudo apt-get install gcc-multilib g++-multilib
问题四:
报错的原因大概就是/usr/local/lib/libz.so是x86的64位架构的,不能用在板子上,所以需要从新编译zlib。
这里只要在cmake-gui配置是勾选上BUILD_ZLIB就可以了