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

发布时间 2023-08-03 18:31:18作者: 鹅要长大

前言

 

环境准备

 

编译配置

 

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_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博客