2021-08-05

OpenCV 移植与交叉编译详细过程以及问题解决记录 目标板:OrangepiZero2 (全志h616) Opencv版本:3.4.13 阅读详情

Opencv3.4.14交叉编译AArch64(rk3399pro)

参考链接:https://blog.csdn.net/hunzhangzui9837/article/details/89846928

准备工作

环境:ubuntu18.04 64bit desktop (192.168.102.128) 
开发板:rk3399pro
交叉编译工具:gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar

编译步骤:

1.安装cmake和cmake-gui
sudo apt-get install camke cmake-gui cmake-qt-gui
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libgtk2.0-dev libjpeg-dev libpng-dev libtiff-dev 
2.配置交叉编译环境

sudo vim /etc/bash.bashrc

#set java env
export JAVA_HOME=/home/gaojun/devdisk/jdk1.8.0_281
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar:$CLASSPATH
export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH

#set gcc env
export PATH=/home/gaojun/devdisk/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin:$PATH

3.编译opencv3.4.14

一)下载opencv3.4.14 官网地址:https://opencv.org/

二)解压进入该目录,新建build目录。

三)执行cmake-gui,配置选项。

  1. 选择opencv3.4.14的解压目录和build目录,如图:

第一处取名为Linux(区分大小写,错误5),不要取图上的名字,不然会出问题;

第二处为gcc交叉编译器;

第三处为g++交叉编译器;

第四处为交叉编译工具bin目录;

然后Finish,出现:

四)编译

在编译之前需要配置几项参数,避免报错。
1)修改build目录下的CMakeCache.txt
 sudo vim CMakeCache.txt
 
 在CMake_EXE_LINKER_FLAGS:STRING后面添加:-lpthread -lrt -ldl;如图:
 ![image](http://note.youdao.com/noteshare?id=7779019135633c4da5c230c99d9a3fda&sub=323CC667C6B3403291D1ACBFC4BB599F)
 

执行:

  sudo make
  sudo make install
4.碰到的问题
错误1:
error: #error "No suitable threading library available."
 
 #error "No suitable threading library available."
解决:

参考:https://blog.csdn.net/XHW___001/article/details/87377357

sudo gedit xx/xx/common.cc
添加:

#define HAVE_PTHREAD

错误2

can not be used when making a shared object; recompile with -fPIC
错误如图:

原因:

目前Linux OS系统会推出32位和64位两个不同的版本,由于32位程序和64位程序可能不兼容,因此如果在32bit OS环境下编译获得的库文件,移植入64bit环境时会产生Could not read symbols错误,一般是64 位 电脑才会出现。

参考:https://www.2cto.com/kf/201708/663543.html#

解决:

进入opencv目录下的3rdparty的对应目录CMakeFiles/ *.dir下,打开flags.make,在C_FLAGS = 后添加-O3 -fPIC用来支持在64位机上编译
如…/3rdparty/zlib/CMakeFiles/zlib.dir/flags.make
修改C_FLAGS =-W -Wall 为 C_FLAGS =-O3 -fPIC-W -Wall

修改CXX_FLAGS =-W -Wall 为 C_FLAGS =-O3 -fPIC-W -Wall

错误3

libopencv_imgcodecs.so:undefined reference to ‘png_init_filter_functions_neon’

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5narzTYG-1628133321899)(http://note.youdao.com/noteshare?id=f034bf242852800b68c8bf3434a2b958&sub=F5F3F802926C498FA4FE9CD40C62ABE6)]

解决:

修改
${HOME}/opencv-3.3.1/3rdparty/libpng/pngpriv.h

注释掉:

/*# if (defined(ARM_NEON) || defined(__ARM_NEON)) && */
修改为:

if defined(PNG_ARM_NEON) && (defined(ARM_NEON) || defined(__ARM_NEON)) && \

错误4(重要)

在编译时,始终不识别ant,如下图:
安装apache-ant-1.9.9
软链接 ln -s apache-ant-1.9.9/bin/ant /usr/bin/ant

软链接必须要做,否则无法识别ant。
直接安装ant,使用的是JDK11,导致运行出错。有时ant不识别,需要多刷几次。

错误5

libraries: …/…/lib/libopencv_features2d.so: cannot open shared object file: No such file or directory

解决:
Operating System 填写Linux (区分大小写)

调用OpenCV库出现: undefined reference to `xxxxx‘ 的解决办法(使用MinGW编译器) 调用OpenCV库出现:undefined reference to "XXXX"错误的解决办法 阅读详情

相关推荐

易智联LM401模块学习(一)——初识Lora

Lora

weixin_46046597的博客 1009

ubuntu安装opencv报错:libopencv_imgcodecs.so.4.6.0: undefined reference to和libopencv_imgcodecs.so.4.6.0:

ubuntu下安装opencv以下是我遇到的两种报错: /usr/bin/ld: …/…/lib/libopencv_imgcodecs.so.4.5.0: undefined reference to “TIFFOpen@LIBTIFF_4.0” /usr/bin/ld: /home/ztyf/anc

qq_52095705的博客 4262

alsa 使用动态库链接遇到undefined reference to `fstat64@GLIBC_2.33

libasound.so动态库 链接异常的解决

菜鸡搞计算机 1862

Undefined symbol解决方法

Undefined symbol解决方法

扬帆起航 4万+

2021-05-08

qq_56414494的博客 83

java中如何将2021-04-05T13:08:22+08:00转成date呢

java中如何将2021-04-05T13:08:22+08:00转成date呢 public static Date dealDateFormat(String oldDateStr) { DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); try { Date date = df.parse(oldDateStr); return date;

qq_43153224的博客 7800

java中如何把2021-04-05T11:22:23.349+08:00转成Date呢

java中如何把2021-04-05T11:22:23.349+08:00转成Date呢 public static Date dealDateFormat(String oldDateStr) { DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); try { Date date = df.parse(oldDateStr); return date; }

qq_43153224的博客 5474

【无标题】C# JToken:获取原始/原始JSON值 ;将2021-08-05T05:13:19Z 时间格式转为DateTime

C# JToken 获取原始json值,转换RFC3339 时间格式

zixiao33的博客 757

caffe编译报错lib/libopencv_imgcodecs.so: undefined reference to `png_create_read_struct@PNG16_0'等

具体错误描述: /home/xuqiong/anaconda2/lib/libopencv_imgcodecs.so: undefined reference to `png_create_read_struct@PNG16_0' /home/xuqiong/anaconda2/lib/libopencv_imgcodecs.so: undefined reference to `png_se...

山中有石为玉 9999

Ubuntu18.04opencv的安装及应用

文章目录一、 opencv的下载及安装1. 下载地址2. 安装2. 配置环境二、图片三、视频1. 授权虚拟机获取摄像头2. 播放视频3. 录制视频四、总结五、参考文献 一、 opencv的下载及安装 1. 下载地址 国内快速下载地址:https://www.bzblog.online/wordpress/index.php/2020/03/09/opencvdownload/ 虚拟机连上网后,可以直接在虚拟机中的浏览器中输入上面的网址进行下载。 要使虚拟机连上网,可以在“虚拟机设置”中的网络适配器下选择NA

啥也不懂的博客 1915

交叉编译opencv3.2.0

交叉编译opencv3.2.0后连接出现: libopencv_imgcodecs.so: undefined reference to `png_init_filter_functions_neon' 进入到3rdparty/libpng,在CMakeLists.txt最顶端增加: set(ENABLE_NEON ON)

zhoudekuai的专栏 5070

Ubuntu18.04——OpenCV的安装方法

Ubuntu18.04——OpenCV的安装方法一、安装成功截图二、参考链接三、细节说明1、这里改为我们需要安装的版本号(例如3.4.16、3.4.14等)2、这里它说错的了,对应他安装的版本,这里应该为opencv_contrib-3.4.123、顺着博主的代码一路下来,中途不要关闭终端或者自己更改终端运行目录 一、安装成功截图 二、参考链接 ubuntu18.04安装OpenCV3.4.12步骤及安装中遇到的一些问题 三、细节说明 1、这里改为我们需要安装的版本号(例如3.4.16、3.4.14等)

Williamcsj的博客 3014

opencv安装报错“undefined reference to `TIFFReadRGBAStrip@LIBTIFF_4.0‘”解决随记

opencv安装报错“undefined reference to `TIFFReadRGBAStrip@LIBTIFF_4.0‘”,解决随记

weixin_42634645的博客 1260

【施磊】C++课程笔记目录

C++编程】施磊老师C++笔记目录

GeniusAng的博客 4046

opc2modbus专业亲测版本

opc2modbus专业亲测版本,不用授权码,亲测有效,可靠稳定

下一篇: 基于RK3399Pro搭建Ubuntu18.04文件系统及镜像生成
olinaliu
博客等级 码龄18年 0粉丝 2原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值