opencv源码交叉编译安卓库

因为项目需要编译opencv安卓动态库,应用于armv8-64平台,记录下编译过程。

一、交叉编译环境

系统:ubuntu16.04

ndk版本:android-toolchain-r14b(ndk下载地址,选对应版本)https://developer.android.google.cn/ndk/downloads/index.html

cmake:3.6   camke命令安装,参考地址:https://www.cnblogs.com/wt645631686/p/6868487.html

openc源码下载地址:https://opencv.org/
 

二、编译流程

1、生成独立交叉编译工具连

在android-ndk-r14b所在目录执行如下命令生成独立交叉编译工具链
./build/tools/make-standalone-toolchain.sh --toolchain=arm-linux-androideabi-4.9 --platform=android-21 --install-dir=./android-armv8 --arch=arm --force

--install-dir为生成的独立交叉编译工具链的安装目录
--force 加上这个选项会先移除安装目录下已经存在的工具

2、编译opencv动态库

export NDK_HOME=/your path/android-ndk-r14b
export PATH=$NDK_HOME:$PATH
export ANDROID_NDK=/you path/android-ndk-r14b

 2.1   进入opencv源码的主目录

cd /your path/opencv_3.2.0

 2.2   创建build的文件夹并进入

mkdir build
cd build

 2.3   安装依赖包:如果要编译生成libopencv_java.so文件,需要安装ant工具,并且cmake指定 -DBUILD_OPENCV_JAVA=ON

sudo apt-get install aut

 2.4   cmake生成makefile文件

cmake -DCMAKE_TOOLCHAIN_FILE=../platforms/android/android.toolchain.cmake \
      -DCMAKE_ANDROID_NDK=/your path/android-ndk-r14b \
      -DANDROID_NATIVE_API_LEVEL=21 \
      -DBUILD_ANDROID_PROJECTS=OFF \
      -DBUILD_ANDROID_EXAMPLES=OFF \
      -DCMAKE_BUILD_TYPE=Release \
      -DBUILD_JAVA=ON \
      -DBUILD_OPENCV_JAVA=ON \
      -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a \
      -D WITH_CUDA=OFF \
      -D WITH_MATLAB=OFF \
      -D BUILD_DOCS=OFF \
      -D BUILD_PERF_TESTS=OFF \
      -D BUILD_TESTS=OFF \
      -DBUILD_OPENCV_JAVA=ON \
      -DCMAKE_INSTALL_PREFIX=/your path/opencv-3.2.0/install_r \
      ..

cmake 命令中指定库的arch_abi=arm64_v8a,可能碰到结果只生成armeabi-v7a的情形。一种解决方法是直接修改opencv-3.2.0/platforms/android/android.toolchain.cmake文件,直接强制SET(ANDROID_ABI "arm64-v8a")。

#line638
# choose target ABI
__INIT_VARIABLE( ANDROID_ABI VALUES ${ANDROID_SUPPORTED_ABIS} )

SET(ANDROID_ABI "arm64-v8a")

cmake完成后如下图所示。值得注意的是stl支持的默认方式是gunstl_static

2.5  编译并安装

make -j4 && make install

执行完之后,编译生成的库文件在/your path/opencv-3.2.0/install_r目录下

 

三、参考

参考链接:
https://www.jianshu.com/p/925614d6e9e0 OpenCV3.4源码交叉编译android库
https://blog.csdn.net/Martin_chen2/article/details/80463610
https://www.jianshu.com/p/288ca9327b32 源码编译Android openCV+openCV_contrib库

//下面这个链接很重要,生成libopencv_java.so。
https://blog.csdn.net/u010363893/article/details/54892448?depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-1&utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-1

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值