TensorFlow编Android so库总结
一、下载安装tensorflow
参考(http://blog.youkuaiyun.com/u013832707/article/details/73161071)
- 获取源码
git clone –recurse-submodules https://github.com/tensorflow/tensorflow
其中–recurse-submodules 参数是必须的, 用于获取 TesorFlow 依赖的 protobuf 库. - 安装bazel
安装bazel依赖
sudo apt-get install pkg-config zip g++ zlib1g-dev unzip
安装openjdk
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk
配置openjdk 8为默认java环境:
sudo update-alternatives –config java
sudo update-alternatives –config javac
安装bazel
Add Bazel distribution URI as a package source (one time setup)
echo “deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8” | sudo tee /etc/apt/sources.list.d/bazel.list
curl https://bazel.build/bazel-release.pub.gpg | sudo apt-key add -
If you want to install the testing version of Bazel, replace stable with testing.
Install and update Bazel
sudo apt-get update && sudo apt-get install bazel
Once installed, you can upgrade to a newer version of Bazel with:
sudo apt-get upgrade bazel
(参考https://docs.bazel.build/versions/master/install-ubuntu.html)
安装其他依赖
sudo apt-get install python-numpy swig python-dev
sudo apt-get install python-numpy python-dev python-pip python-wheel
其中通过apt-get install 安装的pip太老了,需要升级
sudo pip install –upgrade pip
生机protobuf
sudo pip install –upgrade protobuf - 配置安装Tensorflow
从源码树的根路径执行: ./configure
到配置Android Workspace时,配置SDK路径和NDK路径(目前NDK支持1.4b,太高的话编译时会报fft2d错误)。
二、编译命令
编译so库
bazel build -c opt //tensorflow/contrib/android:libtensorflow_inference.so –crosstool_top=//external:android/crosstool –host_crosstool_top=@bazel_tools//tools/cpp:toolchain –cpu=armeabi-v7a
编译完毕后,libtensorflow_inference.so的路径为:
/tensorflow/bazel-bin/tensorflow/contrib/android
编译jar包
bazel build //tensorflow/contrib/android:android_tensorflow_inference_java
编译完毕后,android_tensorflow_inference_java.jar的路径为:
/tensorflow/bazel-bin/tensorflow/contrib/android
三、自定义so文件
修改目录为(/tensorflow/contrib/android)
<代码占位>