一、概述
本章节是针对opencv-4.7.0移植到Linux系统,运行在正点原子-I.MX6U ALPHA开发板
上,详细的移植流程如下。
二、环境要求
2.1 硬件环境
- 正点原子-I.MX6U ALPHA开发板
- 虚拟机:VMware
2.2 软件环境
- Ubuntu系统要求:20.04
- opencv版本: 4.7.0
- opencv贡献软件版本:4.x
- 交叉工具链版本:gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf
三、移植流程
imx6ull平台交叉编译器环境:gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf,交叉编译器环境路径是/tools/ToolsChain/nxp/imx6ull/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf,交叉编译器前缀是arm-linux-gnueabihf-。
opencv-4.7.0和opencv_contrib-4.x在同一级目录,如下图所示:
3.1 编写平台需要的文件
进入opencv-4.7.0目录下,执行mkdir build
命令创建build目录,创建并编写toolchain-linux-imx6ull.cmake
文件,如下图所示:
图片内容如下:
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_PROCESSOR arm)
SET(TOOLCHAIN_DIR "/tools/ToolsChain/nxp/imx6ull/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf")
SET(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_DIR})
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
SET(CMAKE_C_COMPILER ${TOOLCHAIN_DIR}/bin/arm-linux-gnueabihf-gcc)
SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/bin/arm-linux-gnueabihf-g++)
SET(CMAKE_NM ${TOOLCHAIN_DIR}/bin/arm-linux-gnueabihf-gcc-nm)
SET(CMAKE_RANLIB ${TOOLCHAIN_DIR}/bin/arm-linux-gnueabihf-gcc-ranlib)
SET(CMAKE_AR ${TOOLCHAIN_DIR}/bin/arm-linux-gnueabihf-ar CACHE FILEPATH "Archiver")
保存并退出
3.2 编译并安装
在build目录下执行mkdir -p ../build_tmp/build_imx6ull
目录,并进入build_imx6ull目录下,如下图所示:
这样创建的好处便于扩展。
在build_imx6ull目录下执行内容如下:
cmake -DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_INSTALL_PREFIX=/data/Workspace_Linux/software_lib/opencv-x.x.x/output/opencv-4.7.0/imx6ull \
-DCMAKE_TOOLCHAIN_FILE=/data/Workspace_Linux/software_lib/opencv-x.x.x/opencv-4.7.0/build/toolchain-linux-imx6ull.cmake \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_CXX_FLAGS=-fPIC \
-DCMAKE_C_FLAGS=-fPIC \
-DCMAKE_EXE_LINKER_FLAGS=-lpthread -ldl \
-DWITH_JPEG=ON \
-DWITH_OPENCL=ON \
-DWITH_PNG=ON \
-DOPENCV_EXTRA_MODULES_PATH=/data/Workspace_Linux/software_lib/opencv-x.x.x/opencv_contrib-4.x/modules ../..
其中,
- -DCMAKE_INSTALL_PREFIX:安装目录;
- -DCMAKE_TOOLCHAIN_FILE:工具链配置目录;
- -DOPENCV_EXTRA_MODULES_PATH:opencv4.7.0的贡献软件目录,与opencv4.7.0同级。
执行结果如下图所示:
之后执行make -j8
命令进行编译,如下图所示;
之后执行make install
命令进行安装,如下图所示:
3.3 编译结果
安装的目录相对于build_imx6ull目录位置ls ../../../output/opencv-4.7.0/imx6ull/
,如下图所示: