海思3559上移植OpenCV3.4.1 (一) 代码移植

一、源码下载

下载opencv3.4.1 Linux版源码,
https://opencv.org/opencv-3-4-1.html

二、路径创建

创建一个独立的文件夹来存储build文件

 $ mkdir build

创建个output目录 存放输出文件

$ mkdir output

三 、Cmake

OpenCV是通过cmake来构建的编译使用的Makefile。
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件。

cmake 安装

 sudo apt-get install cmake

进入到build 路径,按照下面的方式执行cmake:

cmake -D CMAKE_BUILD_TYPE=RELEASE  \
 -D  CMAKE_INSTALL_PREFIX=../output  \
-D  CMAKE_C_COMPILER=arm-hisiv600-linux-gcc \
-D  CMAKE_CXX_COMPILER=arm-hisiv600-linux-g++ \
 -D BUILD_SHARED_LIBS=ON \
..

说明
CMAKE_C_COMPILER:指定C编译器
CMAKE_CXX_COMPILER:指定C++编译器
CMAKE_C_FLAGS:编译C文件时的选项,如-g;也可以通过add_definitions添加编译选项
EXECUTABLE_OUTPUT_PATH:可执行文件的存放路径
LIBRARY_OUTPUT_PATH:库文件路径
CMAKE_BUILD_TYPE::build 类型(Debug, Release, …),CMAKE_BUILD_TYPE=Debug
BUILD_SHARED_LIBS:ON 静态库, OFF 动态库

一定要注意后面的两个点不能省略,这两个点指明了opencv源码的位置。

然后可以看到在build的路径下生成了很多文件和Makefile
海思3559上移植OpenCV3.4.1 (一) 代码移植_第1张图片

注:CMakeCache.txt,该文件是上次cmake时候留下的缓存文件,如果在编译过程中报错,可以将该文件删除,然后再执行cmake。

四、编译

在build 路径下,执行 make

问题一:

Scanning dependencies of target libpng
[ 22%] Building C object 3rdparty/libpng/CMakeFiles/libpng.dir/pngwutil.c.o
In file included from /home/lie/third_party/opencv-3.4.1/3rdparty/libpng/pngpriv.h:904:0,
                 from /home/lie/third_party/opencv-3.4.1/3rdparty/libpng/pngwutil.c:14:
/home/lie/third_party/opencv-3.4.1/3rdparty/libpng/pngstruct.h:30:18: fatal error: zlib.h: No such file or directory
 #include "zlib.h"

在编译png的库时,找不到zlib.h

网上说:“是系统里面没有安装 zlib开发包.执行 apt-get install zlib1g-dev 。然后重新编译就解决了”。
但是这个对交叉编译的没有用。
这个版本的OpenCV已经包含了第三方的库
3rdparty
我的解决办法如下:
修改顶层目录的
CMakeLists.txt

......
ocv_include_directories(${OPENCV_CONFIG_FILE_INCLUDE_DIR})
ocv_include_directories(./3rdparty/zlib/) 
......

在514行增加以上代码: ocv_include_directories(./3rdparty/zlib/)
按照上面的方法进入到build 路径重新执行Cmake

继续执行

make
make install 。

可以在output路径下看到
在这里插入图片描述
我们看下lib有:

海思3559上移植OpenCV3.4.1 (一) 代码移植_第2张图片
到此编译完成。

你可能感兴趣的:(海思平台(hisi),开源移植)