OpenCV的Android平台交叉编译(CMake)
阅读原文时间:2021年04月20日阅读:1

1.环境与工具

2.准备工作

  1. 解压缩 android-ndk-r15c-linux-x86_64.zip~/android-ndk-r15c
  2. 解压缩 opencv-3.4.0.zip~/_opencv-3.4.0_

3.生成交叉编译工具

  • 进入工具目录 cd ~/android-ndk-r15c/build/tools/,文件结构如图

  • 执行命令 ./make-standalone-toolchain.sh --toolchain=arm-linux-androideabi-4.9 --arch=arm --platform=android-22  --package-dir=/tmp/compile-tools

  • --toolchain:位于目录 ~/android-ndk-r15c/toolchains 下的工具链,根据目标CPU架构选择

  • --arch:CPU架构类型,可选{arm,arm64,mips,mips64,x86,x86_64}

  • --platform:目标Android系统版本号

  • --package-dir:生成交叉编译工具目录

  • 进入生成目录 cd /tmp/compile-tools,文件结构如图

  • 解压缩交叉编译工具包,执行命令 tar -xjvf arm-linux-androideabi.tar.bz2,结果文件目录如图

4.编译准备工作

  • 进入OpenCV目录,执行命令 cd ~/_opencv-3.4.0_,文件结构如图

  • 添加如下代码到CMakeLists.txt文件起始处,保存并退出,结果如图

    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIE")
    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fPIE -pie")
    set(NDK_STANDALONE_TOOLCHAIN /tmp/ndk-cherny/arm-linux-androideabi)
    set(CMAKE_SYSTEM_NAME Android)
    set(CMAKE_SYSTEM_VERSION 22)
    set(CMAKE_C_COMPILER ${NDK_STANDALONE_TOOLCHAIN}/bin/clang)
    set(CMAKE_CXX_COMPILER ${NDK_STANDALONE_TOOLCHAIN}/bin/clang++)
    set(CMAKE_FIND_ROOT_PATH ${NDK_STANDALONE_TOOLCHAIN})

    add_definitions("--sysroot=${NDK_STANDALONE_TOOLCHAIN}/sysroot")
    add_definitions(-D__ANDROID_API__=22)

5.编译OpenCV

  • 创建build目录并进入,mkdir build;cd build
  • 执行命令cmake .. ,执行成功结果如图

  • build目录下会出现Makefile文件

  • 配置成功后,执行命令make -j4
    • -j:jos,编译线程数,根据CPU线程数选择
  • 编译成功后,build/lib 和 build/3rdparty/lib目录下会生成目标库文件,如下图所示

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章