【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 cmake
brew install cmake
wget安裝方式如上過程。
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文件!!!
聯繫我
QQ:492717776
Email:[email protected]
支付寶打賞:https://pan.baidu.com/s/1UMWjU1FHv7hYpdlcCQrJ3A
微信打賞:https://pan.baidu.com/s/1dSBXk3eFZu3mAMkw3xu9KQ
公衆號推薦: