为hi3516移植oepncv(一、交叉编译)

gkh 发布于 2020-07-29 21105 次阅读


搭建环境centos7+oepncv3.4.11
海思的官方例程已经跑通了,证明整套板子已经可以在自己手里工作了,接下来就需要增加自己需要的新功能了,比如图像识别之类的。那必然避不开开源库oepncv了,虽然之前在电脑端玩过,但是流程估计不太一样。这次尝试一下移植到嵌入式端试试。
首先安装cmake和cmake-gui
image.png
image.png
装好后运行然后进行路径配置,勾选BUILD目录下需要编译的部分。最后在相关路径生成相关文件。
在配置界面填写交叉编译器的相关路径

CMAKE_EXE_LINKER_FLAGS=-lbthread -lrt -ldl
CMAKE_FIND_ROOT_PATH = /opt/hisi-linux/x86-arm/arm-hisiv500-linux/bin
CMAKE_FIND_ROOT_PATH_MODE_INCLUDE = /opt/hisi-linux/x86-arm/arm-hisiv500-linux/target/usr/include
CMAKE_FIND_ROOT_PATH_MODE_LIBRARY = /opt/hisi-linux/x86-arm/arm-hisiv500-linux/target/usr/liabrary
CMAKE_INSTALL_PREFIX=/usr/local/x86-arm

CMAKE_SYSTEM_NAME = arm-linux
CMAKE_SYSTEM_PROCESSOR = arm
CMAKE_EXE_LINKER_FLAGS:STRING=-lpthread -lrt -ldl
CMAKE_CXX_FLAGS:STRING=-fpermissive

 

编译过程遇见的问题
在3%的时候遇见了error: operator '==' has no left operand的问题,知道是缺少左操作数
image.png
猜测可能是前面那个变量没有给出定义,所以导致出错,想自己定义一下,此时会提示重复定义,根据路径进行解决
image.png
加入定义后即可,因为这个板子只有512m内存,就当做32位处理吧。

26%的时候遇见了
image.png
应该是没有找到HAVE_PTHREAD定义,增加define
#define HAVE_PTHREAD 1
96%遇见了这个问题
image.png
提示类型转换不匹配,可能然而错误难么多,应该不会去改代码吧。然而也没什么好办法,百度了一下好像是某个库不对,寻找了一下把imgproc那个模块屏蔽了即可。
添加这个符号即可

CMAKE_CXX_FLAGS:STRING=-fpermissive

此时编译通过了,先写个测试例程试试。 (dai xu .....)
(程序编译真确性待议,通过readelf命令可以查看动态库的elf头,显示的内核不是cortex-A7)
(首先学习一下怎么编写make文件吧,目前只会小改o(╥﹏╥)o)

此作者没有提供个人介绍。
最后更新于 2020-08-04