赞
踩
基本步骤参考我同事的博客:https://blog.csdn.net/hunzhangzui9837/article/details/89846928
以下是在移植到imx8平台时的笔记和遇到的问题及解决办法:(其他平台一样的步骤,只是交叉编译工具链不一样而已)
1.Opencv编译去掉和关闭的模块:
关闭:gphoto2,WITH_GTK,WITH_TIFF,1394,cuda
打开:JPEG,PNG
配置完成,都要再次点击 Configure,点 Generate。
opencv_contrib编译
cmake-gui
找到 OPENCV_EXTRA_MODULES_PATH 项,选择扩展库源码 opencv_contrib-3.3.1 目录下的 modules 目录
配置完成,都要再次点击 Configure,点 Generate。
2.fatal error: linux/compiler-gcc5.h: 没有那个文件或目录
此错误的原因是交叉编译内核的gcc版本和本地系统Ubuntu的gcc版本不一致,Ubuntu的gcc版本高于内核gcc版本,采取降低Ubuntu的gcc版本,如下命令操作:
gcc下降
安装
sudo apt-get install -y gcc-4.7
sudo apt-get install -y g++-4.7
重新建立软连接
cd /usr/bin #进入/usr/bin文件夹下
sudo rm -r gcc #移除之前的软连接
sudo ln -sf gcc-4.7 gcc #建立gcc4.7的软连接
sudo rm -r g++ #同gcc
sudo ln -sf g++-4.7 g++
可以通过 gcc -version 查看当前gcc版本
3.修改权限
chmod -R 777 opencv-3.3.1 文件夹目录下所有文件给最高权限
错误处理:
1.错误一
报错:undefined reference to `png_init_filter_functions_neon' 未定义的引用
交叉编译 opencv3.3.1 ffmpeg libpng
修改
${HOME}/opencv-3.3.1/3rdparty/libpng/pngpriv.h
128 /*# if (defined(ARM_NEON) || defined(__ARM_NEON)) && */
为
129 # if defined(PNG_ARM_NEON) && (defined(ARM_NEON) || defined(__ARM_NEON)) && \
2.错误二: zlib.h: No such file or directory
设置ZLIB_INCLUDE_DIRS 值为 /home/mico/software/opencv-3.3.1/3rdparty/zlib
3.在arm平台上运行提示没有GTK不能显示的错误,编译opencv的时候需要把QT编译进去
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。