编译opencv-3.4.5 [交叉编译]

2023-09-20 16:44:25

在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上调用编译好的库文件

更多推荐

平价护眼台灯推荐,2023百元台灯性价比最高的品牌推荐

想要选好护眼台灯首先我们要知道什么是护眼台灯,大的方向来看,护眼台灯就是可以保护视力的台灯,深入些讲就是具备让灯发出接近自然光特性的光线,同时光线不会伤害人眼而出现造成眼部不适甚至是视力降低的照明设备。从细节上看就要具体到护眼台灯的设计、硬核技术、贴心细节、光源的把控等等,灯光的覆盖面积也是关键,综合下才能确定什么才是

Linux- inode & vnode

什么是inodeinode是UNIX和UNIX-like操作系统中的一个关键概念。它代表了文件系统中文件或目录的元数据。每个文件和目录在文件系统中都有一个与之关联的inode。这个数据结构存储了关于文件的所有信息,除了其名称和实际数据之外。以下是inode中通常包含的信息:文件类型:如常规文件、目录、字符设备、块设备、

java版工程管理系统Spring Cloud+Spring Boot+Mybatis实现工程管理系统源码

工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理工程项目各模块及其功能点清单一、系统管理1、数据字典:实现对数据字典标签的增删改查操作2、编码管理:实现对系统编码的增删改查操作3、用户管理:管理和查看用户角

C++——内存管理

目录C/C++内存分布C++内存管理方式new/delete操作内置类型new和delete操作自定义类型new失败operatornew与operatordelete函数new和delete实现原理内置类型自定义类型定位new常见问题malloc/free和new/delete的区别C/C++内存分布栈又叫堆栈--非

Puppeteer无头浏览器:开启自动化之门,掌握浏览器世界的无限可能

大概还是入门期,我曾用Puppeteer做爬虫工具以此来绕过某网站的防爬机制。近期有需求要做任意链接网页截图,像这种场景非常适合用Puppeteer完成。无头浏览器我已知的还有Selenium。完成截图需求踩的最大的坑不是具体的逻辑代码,而是Docker部署Puppeteer到服务器总是缺少某个包。踩坑过程我想另外写一

如何利用软文推广进行SEO优化(打造优质软文,提升网站排名)

在当今的互联网时代,SEO优化成为了网站推广的关键。而软文推广作为一种有效的推广方式,其优点不仅仅局限于SEO,还可以带来更多的曝光和用户流量。本文将深入探讨如何做好软文推广,从而提升网站排名和流量。了解目标受众群体内容在进行软文推广之前,需要对目标受众群体进行详细的了解。包括年龄、性别、职业、喜好等方面,以便准确把握

什么是ELK

什么是ELKELK并不是一个技术框架的名称,它其实是一个三位一体的技术名词,ELK的每个字母都来自一个技术组件,分别是Elasticsearch(简称ES)、Logstash和Kibana。三个技术组件是独立的,后两个被elastic公司收购,通常配合起来使用。ELK的组成部分Elasticsearch:是一个分布式的

使用Docker+Jenkins+Gitee自动化部署SpringBoot项目

目录搭建基础环境1、使用Docker-Compose搭建基础环境2、搭建项目仓库环境,创建Dockerfile文件(2022-12-15更新)3、配置Jenkins3.1、初始化Jenkins3.2、安装核心插件3.3、全局工具配置3.3.1、配置Git。3.3.2、配置Maven3.3.3、配置JDK3.4、配置Gi

项目:UDP聊天室

UDPUDP(UserDatagramProtocol)是一种无连接、不可靠、面向数据报的传输协议。与TCP相比,UDP更加轻量级,不提供像TCP那样的可靠性和流控制机制,但具备较低的通信延迟和较少的开销。UDP具有以下几个特点:1.无连接性:UDP在通信之前不需要进行握手或建立连接,可以直接向目标主机发送数据报。这使

阿里云服务器部署安装hadoop与elasticsearch踩坑笔记

2023-09-1214:00——2023.09.1320:06目录00、软件版本01、阿里云服务器部署hadoop1.1、修改四个配置文件1.1.1、core-site.xml1.1.2、hdfs-site.xml1.1.3、mapred-site.xml1.1.4、yarn-site.xml1.2、修改系统/etc

基于STM32F407ZET6的环境温湿度监控系统(粤嵌GEC-M4)

注意使用事项:开发板如下由于外部晶振是8M,需要修改setup和stm32f4头文件的晶振值。操作如下:system_stm32f4xx.c的254行#definePLL_M8stm32f4xx.h的127行#defineHSE_VALUE((uint32_t)8000000)/*!<ValueoftheExterna

热文推荐