前言
环境准备
编译配置
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 -mView 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