编译opencv-3.4.5 [交叉编译]

在unbuntu20.04环境下编译opencv3.4.5,

cmake 版本:3.27.4

gcc 版本:11.4.0

g++版本:11.4.0

在此环境下编译opencv4.5.4正常。

1. 编译时遇到的问题

(1)

Built target libprotobuf
make: *** [Makefile:163:all] 错误 2

make时用suod:     sudo make -j4

(2)

[ 30%] Linking CXX static library ../../lib/libopencv_core.a
[ 30%] Built target opencv_core
make: *** [Makefile:166:all] 错误 2

解决方法: 通过联系不断的执行make命令

3.

make[2]: *** [3rdparty/openexr/CMakeFiles/IlmImf.dir/build.make:118:3rdparty/openexr/CMakeFiles/IlmImf.dir/IlmImf/ImfAcesFile.cpp.o] 错误 1
make[2]: *** [3rdparty/openexr/CMakeFiles/IlmImf.dir/build.make:146:3rdparty/openexr/CMakeFiles/IlmImf.dir/IlmImf/ImfB44Compressor.cpp.o] 错误 1
make[1]: *** [CMakeFiles/Makefile2:1797:3rdparty/openexr/CMakeFiles/IlmImf.dir/all] 错误 2

最后放弃在这个环境下编译这个opencv,因为考虑opencv3.4.5版本比较低,而这台电脑的cmake版本比较高,所以换了安装其他cmake低版本的电脑上编译。

2.换低版本cmake编译

vmware虚拟机上安装的ubuntu20上的环境为:

cmake版本为:3.16.3

gcc/g++:   9.4.0

3. 编译的opencv的.a库是基于x86的,因为并不是用交叉编译工具编译的。

参考:编译出错Relocations in generic ELF (EM: 62)_丁香树下丁香花开的博客-CSDN博客

编译成功了.a静态库, 但是把这些库添加进工程的编译配置后,又出现如下问题

通过objdump命令查看opencv的.a库文件格式,  很奇怪的是它是x86-64格式的

而同样的命令查看rk官方给的examples/3rdparty/opencv/opencv-linux-aarch64/中的库文件,发现格式是 elf64-little的,初步判断我编译的opencv库并不是用通过交叉编译得到的。

4.交叉编译工具编译opencv

opencv库可以直接在RK3566上进行编译,也可以选择在自己的Ubuntu上交叉编译opencv,然后在RK3566上调用编译好的库文件

参考:RK3588移植 opencv交叉编译_rk3588交叉编译opencv3.4.1_Bugger99的博客-CSDN博客

(1)下载交叉编译工具

这里下载: gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu

Downloads | GNU-A Downloads – Arm Developer

下载后把它解压到一个指定的路径之下。后续编译的时候可以直接引用路径下的文件即可。

另一种方式是通过命令行来安装交叉编译工具:


#不指定版本安装gcc和g++交叉编译工具 sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

#指定安装最新的6.xx版本,应该是6.5.0,要安装中间小版本只能去下载编译器的压缩包 sudo apt install gcc-6-aarch64-linux-gnu g++-6-aarch64-linux-gnu

https://www.cnblogs.com/TaXueWuYun/p/15075015.html

(2)opencv下载

Releases - OpenCV

cd opencv-3.4.5

mkdir build  &&  cd  build

mkdir install

(3)安装好cmake, 我的cmake 版本是  3.16.3

(4)编译的gcc环境配置

>>  vim ~/.bashrc

>>在最后添加

export PATH="/home/ws/linux-gcc/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin:$PATH"

>>使环境变量生效 : source ~/.bashrc

>>验证gcc:  aarch64-none-linux-gnu-gcc  -v

(5) 编译

进入build路径下:

键入:

cmake  ../

-D CMAKE_BUILD_TYPE=RELEASE

-D CMAKE_INSTALL_PREFIX=/home/wm/Downloads/opencv-3.4.5/build/install     #安装路径,默认/usr/local

-D BUILD_SHARED_LIBS=OFF      #.a静态库

-D SOFTFP=ON          #aarch64结构???

-D CMAKE_CXX_COMPILER=aarch64-none-linux-gnu-g++             #交叉编译工具

-D CMAKE_C_COMPILER=aarch64-none-linux-gnu-gcc                 #交叉编译工具

-D CMAKE_SYSTEM_NAME=Linux                                            #目标系统名称

自己操作过程中,如果没有加最后一项,make到30%进度,即一直不能顺利进行,出现乱七八糟的各种问题。

加上后-D CMAKE_SYSTEM_NAME=Linux  ,有可能在make过程中产生类似如下的错误:

arm平台交叉编译opencv出现 undefined reference to `png_init_filter_functions_neon'

解决方法是:

找到3rdparty/libpng/CMakeLists.txt
在最上面加上

SET(ARM 1)
SET(ENABLE_NEON 1)

重新cmake  && make ,然后成功(make过程中可能断掉,但没提示错误,多重新make几次即可)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/143364.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

这是一堂价值3000元的自驾旅行攻略

点击文末“阅读原文”即可参与节目互动 后期、音频 / 卷圈 运营 / 卷圈,Sand 监制 / 姝琦 封面 / 姝琦midjourney 产品统筹 / bobo特别感谢 / 嘉实多 在过去几年的疲惫和沉甸甸的经历之后,我们心中都怀揣着对自由旅行的渴望,期待着无拘无束…

为什么埃隆·马斯克说Rust是AGI的语言?

为什么埃隆马斯克说Rust是AGI的语言? 大喵点评:本文作者的观点不代表我的观点,另有人视频里指出Mojo比Python快 35000倍的测评有失偏颇。请见👇视频。 但,本篇的价值在于 以及为什么WasmEdge是AGI采用Rust的关键路径…

云计算与大数据——Spark的安装和配置

云计算与大数据——Spark的安装和配置 Spark的简单介绍: Apache Spark是一个基于内存的分布式计算框架,它提供了高效、强大的数据处理和分析能力。与传统的Hadoop MapReduce相比,Spark的主要优势在于其能够将数据集缓存在内存中&#xff0c…

openssl创建CA证书教程

配置生成CA证书 总示意图: (1),通过openssl创建CA证书 第一步:创建一个秘钥,这个便是CA证书的根本,之后所有的东西都来自这个秘钥 # 通过rsa算法生成2048位长度的秘钥 openssl genrsa -out myCA.key 2048 第二步&#…

ue5读取自定义文件夹中内容

一、复制文件夹到Content内 二、读取文件内容,直接使用相对路径就可以了/Content,Resource Bundle存储文件夹名的变量。Load Text为自定义的读取json文件的方法,我之前的文章讲了怎么操作。 ue5读取外部文件_艺菲的博客-CSDN博客 三、根据js…

[FineReport]安装与使用(连接Hive3.1.2)

一、安装(对应hive3.1.2) 注:服务器的和本地的要同时安装。本地是测试环境,服务器的是生产环境 1、服务器安装 1、下载 免费下载FineReport - FineReport报表官网 向下滑找到 2、解压 [rootck1 /home/data_warehouse/software]# tar -zxvf tomcat…

OpenAI宣布ChatGPT支持互联网浏览;GPT-4V(ision)介绍

🦉 AI新闻 🚀 OpenAI宣布ChatGPT支持互联网浏览 摘要:OpenAI宣布ChatGPT现在可以浏览互联网,由微软必应提供支持,并提供直接来源链接。这一功能对于需要最新信息的任务特别有用,如技术研究、购买商品或选…

2023年【汽车驾驶员(高级)】报名考试及汽车驾驶员(高级)考试内容

题库来源:安全生产模拟考试一点通公众号小程序 汽车驾驶员(高级)报名考试根据新汽车驾驶员(高级)考试大纲要求,安全生产模拟考试一点通将汽车驾驶员(高级)模拟考试试题进行汇编&…

YOLOv7改进:CBAM注意力机制

目录 1.介绍 1.1、论文的出发点 1.2、论文的主要工作 1.3、CBAM模块的具体介绍 2.YOLOv7改进 2.1yaml 配置文件如下 2.2common.py配置 2.3yolo.py配置 1.介绍 1.1、论文的出发点 cnn基于其丰富的表征能力,极大地推动了视觉任务的完成,为了提高…

QQ聊天记录文件怎么恢复?这3个方法亲测有效

QQ为用户提供了聊天、语音、视频、在线游戏、社交分享等丰富的功能,满足了用户的各种通讯以及娱乐需求。无论是现在还是过去,QQ仍然在我们的生活中扮演着重要的角色。 如果在使用QQ的过程中,发现文件过期或者被删除了该怎么办?qq…

高性能MySQL第四版

主要列出与第三版的区别 第一章、MySQL架构 MySQL逻辑架构 左右分别是第三和第四版。 第四版架构图里把第二层的“查询缓存”去掉了,也去掉了对应的文字描述。 连接管理和安全 “每个 客户 端 连接 都会 在 服务器 进程 中 拥有 一个 线程” 第四版对这句话增…

基于微信小程序的奶茶点餐小程序设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能:具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

【力扣2057】值相等的最小索引

👑专栏内容:力扣刷题⛪个人主页:子夜的星的主页💕座右铭:前路未远,步履不停 目录 一、题目描述二、题目分析 一、题目描述 题目链接:值相等的最小索引 给你一个下标从 0 开始的整数数组 nums …

文件的随机读写函数:ftell rewind

目录 函数介绍: ftell: 函数原型: 举例: 文件内容展示: 代码操作: 结果: rewind: 函数原型: 举例: 文件内容展示: 代码操作&#xff1…

[C++随笔录] stack queue使用

stack && queue使用 stackqueue题目训练 stack 栈的特点是 先进后出(first in last out) 我们可以看出, stack的接口相比 vector/string/list 的接口少的太多了 构造函数 && 容器适配器 容器适配器的含义: 首先, 适配器 — — 用户传数据进来, 我们用合适的…

Vulnhub-driftingbules:5 靶机复现完整过程

kali的IP地址:192.168.200.14 靶机IP地址:192.168.200.60 一、信息收集 1.对利用nmap目标靶机进行扫描 由于arp-scan属于轻量级扫描,在此直接使用nmap进行对目标靶机扫描开放端口 nmap -A -p 1-65535 192.168.200.60使用nmap扫描 开放的端…

Unity引擎更新收费模式:从收入分成转向游戏安装量,将会有哪些影响呢

一、前言 Unity 引擎宣布自 2024 年 1 月 1 日起,将根据游戏安装量对开发者进行收费。官网通知如下 收费模式如图 这张图的大致意思就是, 从2024年1月1日开始,Unity将对所有达标的用户(开发者)根据游戏安装量征收“安…

STM32 NVIC中断优先级管理通过结构图快速理解

STM32 NVIC中断优先级管理通过结构图快速理解 📑抢占优先级和响应优先级基本常识 🌿抢占优先级的级别高于响应优先级。🌿抢占优先级数值编号越小,所代表的优先级就越高;同理,响应优先级也是如此。&#x1…

存档&改造【02】下载文件模板 打印二维码样式设置

1.下载文件模板 文件模板获取得先设置好全局变量和获取文件URL 声明变量 function fileDownload(url, name) {return new Promise((resolve, reject) > {var xhr new XMLHttpRequest();xhr.open("GET", url, true); // 也可以使用POST方式,根据接口…

Redis的安装与基本使用

文章目录 Linux 环境下安装Redis下载Redis 安装包解压安装包安装Redis进入redis安装包下编译并且安装到指定目录下 启动redis配置远程访问找到Redis.config文件 Windows 环境下安装Redis说明官方提供方式安装或启用WSL2在WSL(Ubuntu)上安装Redis启动Redi…