Ubuntu16.04 编译 Dlib for Android(更新版)
本文为https://blog.csdn.net/lj402159806/article/details/76767882的更新版
编译版本
-
Dlib 19.17
-
ndk-r20
编译环境
首先需要安装sdk tools,然后通过sdkmanager安装cmake和ndk
mkdir sdk && cd sdk
#下载sdk tools
wget https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
#解压sdk tools
unzip sdk-tools-linux-4333796.zip
cd tools/bin
#查看sdk列表
./sdkmanager --list
#安装cmake和ndk
./sdkmanager "cmake;3.6.4111459" "ndk-bundle"
在github下载指定版本的源码
https://github.com/davisking/dlib/releases
编译dlib
进入源码目录新建一个dlibAndroid.sh脚本文件,内容如下
#!/bin/sh
export BASE_PATH=${HOME}/Android
export SDK_PATH=${BASE_PATH}/sdk
export NDK_PATH=${SDK_PATH}/ndk-bundle
export cmake=${SDK_PATH}/cmake/3.6.4111459/bin/cmake
#export OPENBLAS_HOME=${BASE_PATH}/OpenBLAS-0.3.6/android-openblas/armv7a
export OPENBLAS_HOME=${BASE_PATH}/OpenBLAS-0.3.6/android-openblas/arm64
rm -rf android_build
mkdir android_build
cd android_build
${cmake} -DANDROID_SDK=${SDK_PATH} \
-DANDROID_NDK=${NDK_PATH} \
-DCMAKE_TOOLCHAIN_FILE=${NDK_PATH}/build/cmake/android.toolchain.cmake \
-DANDROID_PLATFORM=android-21 \
-DANDROID_ABI="arm64-v8a" \
-DANDROID_STL=c++_static \
-DBLAS_LIBRARIES=${OPENBLAS_HOME}/lib/libopenblas.a \
-DDLIB_NO_GUI_SUPPORT=ON \
-DCMAKE_INSTALL_PREFIX=./android_install/arm64 \
-DCMAKE_BUILD_TYPE=Release $@ ..
#-DANDROID_ABI="armeabi-v7a with NEON" \
${cmake} --build . --config Release --target install -- -j16
然后执行该脚本./opencvAndroid.sh
完成后在android_build/android_install
目录下可以找到头文件和库文件
说明:
export OPENBLAS_HOME=${BASE_PATH}/OpenBLAS-0.3.6/android-openblas/arm64
-DBLAS_LIBRARIES=${OPENBLAS_HOME}/lib/libopenblas.a \
这两句是指定openblas的静态库文件路径,该文件需要事先在android平台上编译好,编译方法参考https://blog.csdn.net/lj402159806/article/details/91436075