深度學習(五十九)mxnet移植至android

hjimce發表於2017-04-20

1、ndk 單獨編譯工具

cd ~/Android/Sdk/ndk-bundle/build/tools/
python make_standalone_toolchain.py --arch arm --api 24 --install-dir /home/hjimce/android-toolchain --stl=libc++
export PATH=$PATH:/home/hjimce/android-toolchain/bin

2、安裝openblas

git clone https://github.com/xianyi/OpenBLAS.git
cd OpenBLAS
sudo make TARGET=ARMV7 HOSTCC=gcc CC=arm-linux-androideabi-gcc NOFORTRAN=1 install PREFIX=/usr/local

3、mxnet mxnet_predict-all.cc生成

export CC=arm-linux-androideabi-gcc
export CXX=arm-linux-androideabi-g++
git clone --recursive https://github.com/dmlc/mxnet.git
cd mxnet/amalgamation
修改amalgamation下的Makefile:
ifndef OPENBLAS_ROOT
    export OPENBLAS_ROOT=/usr/local
endif

make ANDROID=1 MIN=1

生成mxnet_predict-all.cc檔案,如果遇到找不到mxnet相關的src檔案,直接註釋掉,如果遇到找不到fopen64,那麼在mxnet_predict-all.cc檔案中加入:

#define fopen64 std::fopen
然後重新輸入:
make ANDROID=1 MIN=1

4、即將生成兩個檔案,一個是連結庫.so、另一個是mxnet_predict-all.cc,後續移植到手機的時候,只需要這兩個其中的一個、還有一個標頭檔案c_predict_api.h就可以了。
5、具體程式碼中的API呼叫可以參考我寫的caffe 轉mxnet博文。




相關文章