cmake 交叉编译_海思3516dv300交叉编译工具链编译opencv343
系统:虚拟机ubuntu16.04参考大牛贴:https://blog.csdn.net/avideointerfaces/article/details/89477828我基本上都是按照这位老师的帖子进行的,大部分都一样,中间遇到了一些问题,因此自己记录下来。1、 下载下载opencv343,opencv343-contribwget -O opencv-3.4.3.zip https://gi
系统:虚拟机ubuntu16.04
参考大牛贴:
https://blog.csdn.net/avideointerfaces/article/details/89477828
我基本上都是按照这位老师的帖子进行的,大部分都一样,中间遇到了一些问题,因此自己记录下来。
1、 下载
下载opencv343,opencv343-contrib
wget -O opencv-3.4.3.zip https://github.com/Itseez/opencv/archive/3.4.3.zip
wget-O opencv_contrib-3.4.1.zip https://github.com/Itseez/opencv_contrib/archive/3.4.1.zip
unzip opencv-3.4.3.zip
unzip opencv_contrib-3.4.1.zip
2、 安装cmake和cmake-gui
apt install cmake cmake-gui –y
3、 使用cmake-gui生成编译文件,主要是generate之后的一些配置
- l 执行cmake-gui,打开界面,配置如下,build路径需要自己新建:

- l 配置点击configure-cross com…:

Operation System --- arm-himix200-linux-gcc
gcc ---- /opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-gcc
g++ ---- /opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-g++
- 点击finish后会configure一会直到成功
- 修改配置选项
1) 修改CMAKE_INSTALL_PREFIX
文件夹是我自己创建的

2) 添加OPENCV_EXTRA_MODULE_PATH,也就是contrib路径

3) 添加CMAKE_EXE_LINKER_FLAGS
为防止后续源代码编译错误,还得加上下面配置 -lpthread –lrt -ldl

这个是参考,我这样运行时,提示了一个错误:-lrt 找不到文件或目录
所以,我直接把-lrt删除了,重新generate后make,就成功了。
I don’t know why

4) 添加ZLIB_INCLUDE_DIR
这个错误其实是我在编译的时候发现的,找不到zlib,采坑无数你懂得,所以这次就直接填上
路径: opencv-3.4.3/3rdparty/zlib

5) 添加CMAKE_FIND_ROOT_PATH
主要是为了保险,路径
/opt/hisi-linux/x86-arm/arm-himix200-linux/bin/

6) 选中编译opencv_world库

7)配置完成后点击generate来生成可编译得opencv代码。

4、 编译过程调试,主要是缺失文件补充和包含文件路径的修改
l 虚拟机内存和核心修改
刚装好ubuntu虚拟机的时候,使用cmake-gui都好好,后来也不知道为什么,cmake-gui开启之后整个ubuntu系统都卡死了。用free看了一下内存情况,还剩余90%的内存呢,也不知道为什么会卡死(希望有经验的同学们指导一下我~)。查了一顿资料,有增加内存容量,增加cpu个数等等。我建虚拟机的时候就是8G的内存了,所以没有增加。查了一下cpu设置的个数是宿主机的一半比较合适,我设置了8个。设置完确实好转了,特别是make –j8的时候,opencv的编译大概在5min可以完成。下面是我的虚拟机配置。

l make –j8开始编译

- 错误1 No suitable threading library available
解决方法:
vi ../opencv-3.4.3/3rdparty/protobuf/src/google/protobuf/stubs/http://common.cc
添加#Define HAVE_PTHREAD


- 缺失文件补充
fatal error: vgg_generated_120.i,vgg_generated_80.i,vgg_generated_40.i,vgg_generated_64.i,boostdesc_bgm.i等

解决方法,
把确实的文件下载下来,拷贝进opencv_contrib-3.4.3/modules/xfeatures2d/src文件夹下,继续编译就好了。
缺失文件下载路径:
链接:https://pan.baidu.com/s/1-PA3ItqCCiaNUXZxIHHiIg
提取码:xlpn
修改include路径:
opencv-3.4.3/modules/stitching/include/opencv2/stitching/detail/matchers.hpp:52:42: fatal error: opencv2/xfeatures2d/cuda.hpp: No such file or directory
# include "opencv2/xfeatures2d/cuda.hpp"


类似错误都是修改include路径,或者在cmaklist里面包含(这个应该是最方便的,我因为不熟没有尝试,好在报错的不多,我就一一按照错误提示修改了头文件)


- 修改完所有的错误,make -j 编译成功
- make install 安装成功

Cd lib
看到所有的库也都编译好了

大功告成
5、 测试

编写一个测试demo
- #include <iostream>
#include <stdio.h>
#include <opencv2/highgui.hpp>
#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
using namespace cv;
using namespace std;
int main()
{
Mat image(200, 200, CV_8UC1);
Image = 255;
imwrite("demo.jpg", image);
Mat im = imread("demo.jpg");
im -=100;
imwrite("demo1.jpg",im);
return 0;
} - 交叉编译:
arm-himix200-linux-g++ -I /home/sansa/opencv-3.4.3/install_hi3516dv300/include -L /home/sansa/opencv-3.4.3/install_hi3516dv300/lib -lopencv_world -lpthread -lrt -ldl -o demo test_opencv.cpp
- 把生成的demo和opencv生成的lib都拷贝进nfs
- 进入面板机系统,执行的demo程序
在执行demo程序之前,首先要添加lib的搜索路径:
Cd lib
export LD_LIBRARY_PATH="$PWD:$LD_LIBRARY_PATH"
./demo
运行成功
我编译好的opencv:
zip文件是官网下载好的源码,没有做任何修改
加压后的文件是我在编译过程中修改好的

链接:https://pan.baidu.com/s/19_WxuMVk3odXbM3dIVzVbQ
提取码:ca7x
更多推荐
所有评论(0)