ncnn安卓版本编译记录

1、前提条件
linux系统,安装了cmake。
2、编译步骤
(1)下载ncnn项目

git clone https://github.com/Tencent/ncnn.git
cd ncnn
git submodule update --init

如果无法成功clone则可以选择去官方仓库下载对应版本的完整源码,链接为:https://github.com/Tencent/ncnn/releases
下载文件为:ncnn-full-source.zip
(2)安装安卓NDK
下载链接
NDK的版本需要和想要运行的最低安卓版本对应,有些较新的NDK版本不支持很低的android版本,需要查阅下NDK版本更新文档,实际应用中支持到android5即可,最新的NDK r26版本支持最低的版本为android5 ,对应API为21,建议使用满足支持版本的条件下的最新版本的NDK。下面以安装r26c为例:
下载后解压:

unzip android-ndk-r26c-linux-x86_64.zip 

设置安卓NDK路径变量:

export ANDROID_NDK=<your-ndk-root-path>

(3)删除 Android NDK 中的硬编码调试标志(可选项)
如果ndk < r23 修改文件为:

$ANDROID_NDK/build/cmake/android.toolchain.cmake

如果ndk >= r23,则要修改文件为:

$ANDROID_NDK/build/cmake/android-legacy.toolchain.cmake

定位到此处:

list(APPEND ANDROID_COMPILER_FLAGS
  -g
  -DANDROID

然后将-g 这行删除后保存即可,这可以减小库的体积。
(4)编译 armv7/arm64-v8a 架构的库
下面为编译armv7架构的库的过程:
step1: 进入ncnn根目录,创建并进入编译结果生成目录:

cd <ncnn-root-dir>
mkdir -p build-android-armv7
cd build-android-armv7

cmake -DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK/build/cmake/android.toolchain.cmake" \
    -DANDROID_ABI="armeabi-v7a" \
    -DANDROID_ARM_NEON=ON \
    -DANDROID_PLATFORM=android-21 \
    -DNCNN_DISABLE_EXCEPTION=OFF \
    -DNCNN_DISABLE_RTTI=OFF \
    -DNCNN_SHARED_LIB=ON \
    -DCMAKE_BUILD_TYPE=Release ..

-DNCNN_SHARED_LIB=ON是表示将编译为动态库,否则为静态库。如果要编译支持Vulkan,需要添加-DNCNN_VULKAN=ON指令,但是android API必须大于等于android-24版本才支持。以上示例中开启了对EXCEPTION和RTTI的支持,是因为项目中opencv库使用了官方的版本,opencv是支持以上两个功能,为了和opencv保持一致,ncnn也开启,因为当两个(或多个)库的rtti、exceptions编译选项设定不同时,会导致冲突,需要统一。
最后依次执行以下两条命令:

make -j$(nproc)
make install

在install目录中可找到编译后的库及头文件等相关文件。
对于arm64-v8a架构的编译,只需按照上面的步骤另外创建arm64-v8a的编译目录及将-DANDROID_ABI 参数指定为arm64-v8a即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值