失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 嵌入式开发之Opencv(一)交叉编译

嵌入式开发之Opencv(一)交叉编译

时间:2020-11-13 17:32:11

相关推荐

嵌入式开发之Opencv(一)交叉编译

参考文档

本文档涉及到的目标硬件为全志H8(8核Cortex-A7,Armv7架构),但是对其他Arm芯片也有一定的借鉴意义,只需要更换交叉编译链即可。

开发环境介绍

主机操作系统:Ubuntu14.04 64位目标平台:BoxV3 全志H8交叉工具链:arm-linux-gnueabihf,gcc4.8.5opencv版本:3.2.0编译时间:.7.25

设置本地编译链和交叉编译链

# 在/etc/bash.bashrc的最后增加如下指令# Native Compilerexport AR_host="ar"export CC_host="gcc"export CXX_host="g++"export LINK_host="g++"# Allwinner H8 BoxV3 cross compiler, Qt 5.8.0 SDKexport ARCH=armexport PATH=/home/root/CQA83TLinux_Qt5.8.0_bv3/buildroot-.02.3/output/host/usr/bin/:$PATHexport CROSS_COMPILE=arm-buildroot-linux-gnueabihf-export CC=/home/root/CQA83TLinux_Qt5.8.0_bv3/buildroot-.02.3/output/host/usr/bin/arm-buildroot-linux-gnueabihf-gcc export CXX=/home/root/CQA83TLinux_Qt5.8.0_bv3/buildroot-.02.3/output/host/usr/bin/arm-buildroot-linux-gnueabihf-g++ export LD=/home/root/CQA83TLinux_Qt5.8.0_bv3/buildroot-.02.3/output/host/usr/bin/arm-buildroot-linux-gnueabihf-ldexport AR=/home/root/CQA83TLinux_Qt5.8.0_bv3/buildroot-.02.3/output/host/usr/bin/arm-buildroot-linux-gnueabihf-arexport AS=/home/root/CQA83TLinux_Qt5.8.0_bv3/buildroot-.02.3/output/host/usr/bin/arm-buildroot-linux-gnueabihf-asexport RANLIB=/home/root/CQA83TLinux_Qt5.8.0_bv3/buildroot-.02.3/output/host/usr/bin/arm-buildroot-linux-gnueabihf-ranlib# 修改完成之后需要重启命令行才能生效# 你可以通过如下指令来确认交叉编译链是否已经设置好echo $CC # 当显示/home/root/CQA83TLinux_Qt5.8.0_bv3/buildroot-.02.3/output/host/usr/bin/arm-buildroot-linux-gnueabihf-gcc时表示交叉编译链# 已经设置好# 当需要更换为本机编译时屏蔽上面的指令即可

新建cmake Build目录

cd opencv-3.2.0mkdir _build

修改CMakeLists.txt

# 强制打开NEON开关# OCV_OPTION(ENABLE_NEON "Enable NEON instructions" "${NEON}" IF CMAKE_COMPILER_IS_GNUCXX AND (ARM OR AARCH64 OR IOS) )OCV_OPTION(ENABLE_NEON "Enable NEON instructions" ON )

修改cmake/OpenCVCompilerOptions.cmake

if(ENABLE_NEON)add_extra_compiler_option("-mcpu=cortex-a7 -mfpu=neon")

使用cmake-gui进行配置

点击Configure按钮弹出工具链配置界面

选择Specify options for cross-compiling,进入交叉编译链设置界面

点击Configure生成配置选项,并且打开Advancd选项

# 去掉勾选为FLASE 勾选为TRUEBUILD_SHARED_LIBS # FLASE为编译静态库 TRUE为编译动态库CMAKE_BUILD_TYPE # ReleaseCMAKE_CXX_FLAGS # -fPICCMAKE_C_FLAGS # -fPICCMAKE_EXE_LINKER_FLAGS # -lrt -lpthread CMAKE_INSTALL_PREFIX # 自定义安装目录WITH_CUDA# FLASE 禁用CUDAWITH_CUFFT # FLASE 禁用CUFFTWITH_EIGEN # FLASE 禁用EIGENWITH_FFMPEG # FLASE 禁用FFMPEGWITH_OPENCL # FLASE 禁用OPENCLWITH_OPENCLAMDBLAS# FLASE 禁用OPENCLAMDBLASWITH_OPENCLAMDFFT # FLASE 禁用OPENCLAMDFFTWITH_OPENCL_SVM # FLASE 禁用OPENCL_SVM# 可选配置(根据需要进行配置,建议全部去掉勾选)WITH_TIFFWITH_1394WITH_GSTREAMERWITH_JASPERWITH_LAPACKWITH_MATLABWITH_WEBP# Opencv编译模块配置# 为节省编译时间和库体积建议去掉不需要编译的模块,在本文档中只开启了下面几个模块,可以根据具体需要添加BUILD_opencv_core # TRUEBUILD_opencv_imgcodecs# TRUEBUILD_opencv_imgproc # TRUE

点击Generate生成Makefile

进入_build目录&编译

cd _installmake -j8 make install

如果觉得《嵌入式开发之Opencv(一)交叉编译》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。