首页 > 其他分享 >【软件工具安装使用】opencv交叉编译

【软件工具安装使用】opencv交叉编译

时间:2023-08-03 18:33:22浏览次数:73  
标签:编译 sudo 博客 软件工具 opencv swap error

前言

 

环境准备

 

编译配置

 

opencv交叉编译

 

 

opencv_contrib交叉编译

 

问题

1. 对‘png_do_expand_palette_rgba8_neon’未定义的引用

若出现3rdparty/lib/liblibpng.a(pngrtran.c.o):在函数‘png_do_read_transformations’中:pngrtran.c:(.text.png_do_read_transformations+0x16cc):对‘png_do_expand_palette_rgba8_neon’未定义的引用

解决方法: OpenCv4.x + opencv_contrib-4.x交叉编译_weixin_44715387的博客-CSDN博客

vi 3rdparty/libpng/CMakeLists.txt  # 最前面添加以下两个set;
set(ARM 1)
set(ENABLE_NEON 1)

2. 编译过程中断出错;

aarch64-none-linux-gnu-g++: fatal error: Killed signal terminated program cc1plus
 查阅相关信息后,认为是虚拟机内存不足造成的。通过创建swap分区解决了这个问题,编译成功。 解决方法:增加内存;增加swap交换空间;减少进程数量(make -j4); C++: fatal error: Killed signal terminated program cc1plus的问题解决_Y1皇_的博客-CSDN博客 【问题解决】C++: fatal error: Killed signal terminated program cc1plus_tiffiny10的博客
## SWAP分区的创建与激活
# 创建分区路径
sudo mkdir -p /var/cache/swap/
# 设置分区的大小
# bs=64M是块大小,count=64是块数量,所以swap空间大小是bs*count=4096MB=4GB
sudo dd if=/dev/zero of=/var/cache/swap/swap0 bs=64M count=64
# 设置该目录权限
sudo chmod 0600 /var/cache/swap/swap0
# 创建SWAP文件
sudo mkswap /var/cache/swap/swap0
# 激活SWAP文件
sudo swapon /var/cache/swap/swap0
# 查看SWAP信息是否正确
sudo swapon -s  # swap0文件的路径在/var/cache/swap/下,编译完后, 如果不想要交换分区了, 可以删除。

## 删除交换分区
sudo swapoff /var/cache/swap/swap0
sudo rm /var/cache/swap/swap0

## 释放空间
sudo swapoff -a
#详细的用法:swapoff --help
#查看当前内存使用情况:free -m
View Code

3. JPEG问题

/opencv-4.7.0/modules/imgcodecs/src/loadsave.cpp:692: error: (-2:Unspecified error) could not find a writer for the specified extension in function 'imwrite_
 应该是交叉编译库文件的时候,没有选择JPEG选项,所以不能保存jpg格式,改为png格式就可以了;

4. cvWaitKey/GTK问题

what():  OpenCV(4.7.0) /home/ubuntu1804vm/workspace/utils/opencv/opencv-4.7.0/modules/highgui/src/window.cpp:1338: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvWaitKey'
选择GTK_2选项进行编译,还是出现同样的错误,什么原因呢????? 猜测可能是TDA4不支持,因为可能需要用到X11库,而TDA4不支持X11;

 

参考

1. ubuntu交叉编译Opencv-4.2及contrib库并移植ARM开发板_曾哥电子设计的博客-CSDN博客; 2. OpenCv4.x + opencv_contrib-4.x交叉编译_weixin_44715387的博客-CSDN博客; 3. C++: fatal error: Killed signal terminated program cc1plus的问题解决_Y1皇_的博客-CSDN博客; 4. 【问题解决】C++: fatal error: Killed signal terminated program cc1plus_tiffiny10的博客; 完  

 

标签:编译,sudo,博客,软件工具,opencv,swap,error
From: https://www.cnblogs.com/happyamyhope/p/17602618.html

相关文章

  • Rust交叉编译为Android库
    Rust目前在互联网上资料较少,经过几天的折腾,终于在Windows10和GithubActions(Ubuntu)上构建出了armv7和armv8的.so文件。关于JNI的配置见:【Rust实现JNI】https://juejin.cn/post/7092750468631740452交叉编译需要AndroidNDK,我目前使用的是android-ndk-r25c......
  • 如何把.net应用程序防止他人反编译,dll打包并搭建成一个合格的安装包
    背景知识:在理论上,任何.NET程序集(.dll文件或.exe文件)都可以被反编译。C#是一种托管语言,其代码编译成中间语言(IL)或称为CIL(CommonIntermediateLanguage),然后在.NET运行时中执行。反编译工具可以将IL代码还原回C#源代码,使得原本的C#代码可以被查看和修改。 最......
  • 解释型语言和编译型语言
    解释型语言是一种在程序运行时逐行解释并执行的语言解释型语言的代码不需要编译成独立的可执行文件,而是直接在运行时被解释器逐行执行常见的解释型语言有Python、JavaScript、Ruby、Perl、PHP、Shell脚本等。这些语言通常具有较好的跨平台特性,因为它们的源代码可以在不同系统......
  • Pycharm配置less编译生成的css文件到指定目录
    一、当前演示项目目录二、标记less文件夹为资源目录不标记其实也不影响三、打开FileWatchers(文件监视器)在主菜单中选择"File"(文件)>"Settings"(设置)(Windows/Linux)或"PyCharm"(Windows)/"Preferences"(Mac)或者使用快捷键"Ctrl+Alt+S"(Windows/Linux)或&qu......
  • Qt+GDAL开发笔记(二):在windows系统msvc207x64编译GDAL库、搭建开发环境和基础Demo
    前言  上一篇使用mingw32版本的gdal,过程曲折,为更好的更方便搭建环境,在windows上msvc方式对于库比较友好。<br>大地坐标简介概述  大地坐标(Geodeticcoordinate)是大地测量中以参考椭球面为基准面的坐标,地面点P的位置用大地经度L、大地纬度B和大地高H表示。原理  当点在......
  • iTOP-RK3588开发板Ubuntu 系统交叉编译 Qt 工程-命令行交叉编译
    使用源码rk3588_linux/buildroot/output/rockchip_rk3588/host/bin/qmake交叉编译QT工程。最后烧写编译好的buildroot镜像,将编译好的QT工程可执行程序在buildroot系统上运行。交叉编译QT工程如下所示,首先进入QLed的工程目录下。然后使用以下命令交叉编译QT工程,如下......
  • Qt+GDAL开发笔记(二):在windows系统msvc207x64编译GDAL库、搭建开发环境和基础Demo
    前言  上一篇使用mingw32版本的gdal,过程曲折,为更好的更方便搭建环境,在windows上msvc方式对于库比较友好。 大地坐标简介概述  大地坐标(Geodeticcoordinate)是大地测量中以参考椭球面为基准面的坐标,地面点P的位置用大地经度L、大地纬度B和大地高H表示。原理......
  • 129.动态编译与静态编译
    129.动态编译与静态编译1.静态编译静态编译是将程序代码和库函数一起编译成一个可执行文件的过程。在静态编译过程中,程序代码和库函数的代码被组合在一起,形成一个独立的可执行文件,该文件可以在任何系统上运行,因为它包含了所有所需的代码和库函数。1.1优点:1.程序在运行时不需要......
  • 130.hello.c 程序的编译过程
    130.hello.c程序的编译过程以下是一个hello.c程序:#include<stdio.h>intmain(){printf("hello,world\n");return0;}在Unix系统上,由编译器把源文件转换为目标文件。gcc-ohellohello.c这个过程大致如下:![img](D:\BaiduSyncdisk\C++\笔记图片\130.h......
  • llvm编译命令与选项
    编译生成可执行文件clanghello.c-ohello编译生成bc文件(不可读)得到LLVM字节码文件.bc(不可读字节码文件)clang-O3-emit-llvmhello.c-c-ohello.bc-O3:表示使用编译优化级别3来编译程序-emit-llvm:表示要通过clang得到LLVM的字节码文件(.bc)或者汇编文件(.ll......