【软件工具安装使用】opencv交叉编译
前言
首先需要将第三方库在PC端使用交叉编译器进行编译,在PC端编译要运行的程序的时候,需要将PC端的include和lib链接上,根据PC端的第三方库的目录修改CMakeLists.txt;
环境准备
编译配置
opencv交叉编译
opencv_contrib交叉编译
编译完成之后,用到的第三方库,需要使用export将路径加载到/etc/profile文件中,记得source;在嵌入式板子上,需要将交叉编译的第三方库的include和lib等文件复制到板子上,同时使用export将其添加到板子的环境变量中,使得程序运行的时候能够连接上即可;对于TDA4板子,如何写concerto.mak;编译环境路径 和 板子运行环境路径不必一致,只要能够链接上即可,需要export库文件的环境变量;
example:
# dynamic lib export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/3rdlib/facedetectionlib/lib:/opt/3rdlib/aarch64opencvlib/lib # static lib export LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/3rdlib/facedetectionlib/lib:/opt/3rdlib/aarch64opencvlib/lib # g++ head file export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/opt/3rdlib/facedetectionlib/inlcude/facedetection/:/opt/3rdlib/aarch64opencvlib/include # gcc head file export C_INCLUDE_PATH=$C_INCLUDE_PATH:/opt/3rdlib/facedetectionlib/inlcude/facedetection/:/opt/3rdlib/aarch64opencvlib/include
问题
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);
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
## 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
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;
参考
完
各美其美,美美与共,不和他人作比较,不对他人有期待,不批判他人,不钻牛角尖。
心正意诚,做自己该做的事情,做自己喜欢做的事情,安静做一枚有思想的技术媛。
版权声明,转载请注明出处:https://www.cnblogs.com/happyamyhope/
心正意诚,做自己该做的事情,做自己喜欢做的事情,安静做一枚有思想的技术媛。
版权声明,转载请注明出处:https://www.cnblogs.com/happyamyhope/