【MAC】Ncnn 编译so文件方案
1、下载ncnn github地址是:https://github.com/Tencent/ncnn
指定目录:在终端或者git管理工具 输入:git clone https://github.com/Tencent/ncnn.git
2、编译Ncnn
2.1 Mac平台 安装cmake、wget(根据实际编译需要)
注:cmake终端安装方式:brew search cmakebrew install cmakewget安装方式如上过程。
2.2 进入 ncnn(cd ncnn)然后执行sudo ./build.sh
注:在mac下会出异常(其他平台win或Linux未亲测)也许有些环境可以直接运行,目前使用的是oh-my-zsh 终端环境接着修改build.sh执行文件把文件头 #!/usr/bin/bash,修改为 #!/usr/bin/env bash然后再执行sudo ./build.sh如果出现 提示 export ANDROID_NDK=~/your/ndk/path配置自己的ndk路径。安装android studio的朋友可以直接打开AS然后在里面找到ndk路径
如果没有其他异常提示则运行成功 如下图:
有build-android-armv7文件夹,里面包含了install/lib和include(稍后需要用到)
2.3 编译so的的命令ndk-build
jni路径见下图
进入jni路径下
然后在终端输入:sudo ndk-build
正常情况下会有如下提示:
Android NDK: android-9 is unsupported. Using minimum supported version android-14. Android NDK: WARNING: APP_PLATFORM android-14 is higher than android:minSdkVersion 1 in /Users/lichong/Documents/android/github/ncnn/examples/squeezencnn/AndroidManifest.xml. NDK binaries will *not* be comptible with devices older than android-14. See https://android.googlesource.com/platform/ndk/+/master/docs/user/common_problems.md for more information. Android NDK: ERROR:/Users/lichong/Documents/android/github/ncnn/examples/squeezencnn/jni/Android.mk:ncnn: LOCAL_SRC_FILES points to a missing file Android NDK: Check that /home/nihui/dev/qqfacecnn/ncnn/build-android-armv7/install/lib/libncnn.a exists or that its path is correct /Users/lichong/Library/Android/sdk/ndk-bundle/build/core/prebuilt-library.mk:45: *** Android NDK: Aborting . Stop.重要的是“LOCAL_SRC_FILES points to a missing file”
根据提示路径可以找到Android.mk文件:其中有“LOCAL_SRC_FILES := $(NCNN_INSTALL_PATH)/lib/libncnn.a”
再追述“NCNN_INSTALL_PATH=/home/nihui/dev/qqfacecnn/ncnn/build-android-armv7/install”
这个路径看上去很眼熟。哈哈哈!因为这个就是工程的绝对路径。修改ncnn前面的路径“/home/nihui/dev/qqfacecnn/”为~</your/path>即可再次运行ndk-build
会有如下提示:Android NDK: android-9 is unsupported. Using minimum supported version android-14.
Android NDK: WARNING: APP_PLATFORM android-14 is higher than android:minSdkVersion 1 in /Users/lichong/Documents/android/github/ncnn/examples/squeezencnn/AndroidManifest.xml. NDK binaries will *not* be comptible with devices older than android-14. See https://android.googlesource.com/platform/ndk/+/master/docs/user/common_problems.md for more information.
[armeabi-v7a] Compile++ thumb: squeezencnn <= squeezencnn_jni.cpp
[armeabi-v7a] SharedLibrary : libsqueezencnn.so
[armeabi-v7a] Install : libsqueezencnn.so => libs/armeabi-v7a/libsqueezencnn.so
如出现以上提示。
恭喜你成功编译出so文件!!!
3、后记
快过了一年了。最近有反馈在ndk: r19c无法编译出so
现象如下:
也许有童鞋看上去眼熟。这是因为NDK高版本对源码规范比较高导致的。
建议参考:
【亲测】【Android Studio】升级3.1.2异常记录
可下载里面ndk-v16进行编译试试!
以上问题由下面的童鞋反馈
感谢@超级土豆EX
联系我
QQ群号: 94297366
Email: lichongmac@163.com
转载于:https://blog.51cto.com/4789781/2117481