适用于瑞芯微,海思,酷芯等ARM平台。采用编译脚本配置编译选项,方便编译。
目录
一、创建目录
mike@mike-virtual-machine:opencv-4.12/opencv/opencv$ tree . -L 1
.
├── 3rdparty
├── apps
├── armlinux.toolchain.cmake
├── build
├── build.sh
├── cmake
├── CMakeLists.txt
├── CONTRIBUTING.md
├── COPYRIGHT
├── data
├── doc
├── include
├── install
├── LICENSE
├── modules
├── platforms
├── README.md
├── samples
└── SECURITY.md
11 directories, 8 files
二、工具链配置
armlinux.toolchain.cmake
cmake_minimum_required(VERSION 3.15)
if (DEFINED ENV{__ITA_ARM_TOOLCHAIN_HAS_RUN})
return()
endif()
set(ENV{__ITA_ARM_TOOLCHAIN_HAS_RUN} true)
if (NOT DEFINED CMAKE_SYSTEM_NAME)
set(CMAKE_SYSTEM_NAME "Linux")
endif()
if (NOT DEFINED CMAKE_SYSTEM_PROCESSOR)
set(CMAKE_SYSTEM_PROCESSOR arm)
endif()
set(CMAKE_C_COMPILER "${TOOLCHAIN}-gcc")
set(CMAKE_CXX_COMPILER "${TOOLCHAIN}-g++")
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
三、编译脚本
build.sh
#!/bin/bash
BUILD_TYPE=Release
INSTALL_DIR=build/install
TOOLCHAIN=arm-linux-gnueabihf
cmake .. \
-DCMAKE_TOOLCHAIN_FILE=armlinux.toolchain.cmake \
-DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR} \
-DTOOLCHAIN=${TOOLCHAIN} \
-DBUILD_opencv_world=ON \
-DBUILD_TESTS=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_ANDROID_EXAMPLES=OFF \
-DINSTALL_ANDROID_EXAMPLES=OFF
四、编译
cd build/
../build.sh
cmake --build . --config Release -- -j16
先用多线程加速编译,编译到后半段会报错,终止。此时再改成单线程编译即可编译通过。
make install
五、模块裁剪
极简版cmake
cmake ../ \
-DCMAKE_C_COMPILER=arm-himix200-linux-gcc \
-DCMAKE_CXX_COMPILER=arm-himix200-linux-g++ \
-DOPENCV_FORCE_3RDPARTY_BUILD=ON \
-DBUILD_ZLIB=ON \
-DWITH_GTK=OFF \
-DENABLE_NEON=OFF \
-DWITH_GTK_2_X=OFF \
-DWITH_CUDA=OFF \
-DWITH_IPP=OFF \
-DWITH_OPENCL=OFF \
-DWITH_OPENCLAMDBLAS=OFF \
-DWITH_QUIRC=OFF \
-DWITH_OPENCLAMDFFT=OFF \
-DWITH_1394=OFF \
-DWITH_FFMPEG=OFF \
-DWITH_WEBP=OFF \
-DWITH_TIFF=OFF \
-DWITH_OPENEXR=OFF \
-DWITH_PNG=OFF \
-DWITH_PROTOBUF=OFF \
-DWITH_GSTREAMER=OFF \
-DWITH_IMGCODEC_SUNRASTER=OFF \
-DBUILD_SHARED_LIBS=ON \
-DBUILD_opencv_ts=OFF \
-DBUILD_opencv_shape=OFF \
-DBUILD_opencv_stitching=OFF \
-DBUILD_opencv_apps=OFF \
-DBUILD_opencv_calib3d=OFF \
-DBUILD_opencv_dnn=OFF \
-DBUILD_opencv_features2d=OFF \
-DBUILD_opencv_flann=OFF \
-DBUILD_opencv_highgui=OFF \
-DBUILD_opencv_ml=OFF \
-DBUILD_opencv_objdetect=OFF \
-DBUILD_opencv_photo=OFF \
-DBUILD_opencv_video=OFF \
-DBUILD_opencv_videoio=OFF \
-DBUILD_opencv_videostab=OFF \
-DBUILD_opencv_world=ON \
-DBUILD_opencv_python2=OFF \
-DBUILD_opencv_python3=OFF \
-DBUILD_opencv_python_bindings_generator=OFF \
-DBUILD_DOCS=OFF\
-DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_INSTALL_PREFIX=../output \
-DCMAKE_CXX_FLAGS="-s -Os" \
-DCMAKE_C_FLAGS="-s -Os"