在Ubuntu 18.04 LTS 下编译Tensorflow的Android库的步骤:

  1. 安装Android Studio/Android sdk
  2. 安装Android NDK(Android NDK可以单独安装也可以通过Android Studio的SDK插件安装, 怎么安装略)
  3. 安装 能够编译Tensorflow的对应版本的Bazel, TensorFlow和 Bazel 有对应关系的(我也不知道具体的对应关系,早先tensorflow版本无提示,后来版本的tensorflow有不提示),我使用的是 tensorflow-1.15.0和bazel-0.26.1
sudo apt-get install pkg-config zip g++ zlib1g-dev unzip

从 https://github.com/bazelbuild/bazel/releases?after=1.1.0 下载 bazel 0.26.1 的可执行文件
bazel-0.26.1-installer-linux-x86_64.sh 或者 bazel_0.26.1-linux-x86_64.deb

安装方法

$ chmod +x bazel-0.26.1-installer-linux-x86_64.sh
$ ./bazel-0.26.1-installer-linux-x86_64.sh --user

或者

双击 bazel_0.26.1-linux-x86_64.deb 文件安装

或者

sudo dpkg -i bazel_0.26.1-linux-x86_64.deb
  1. 下载需要编译的版本的Tensorflow源代码,或者git clone ,随意, 一般从 branches 中找 Active 版本的 TensorFlow, 比如目前的 r1.15/r2.1/r2.0/r2.2, 不推荐那些 Stale 版本, Stale 就是老掉牙的意思, 别看成稳定版了
  2. 安装python,还有protobuf等库类,这个可以在具体的编译过程查漏补缺,也可以按照官网的依赖直接安装完
  3. 到tensorflow的目录下, ./configure,配置相关的变量,选项,如 android SDK、NDK等
  4. 可以考虑配置一下网络环境, TensorFlow 在编译过程中, 需要从 github.com 下载一些小的 压缩包之类的, 但是网速非常慢, 可以配置一下 /etc/host 镜像 ip 提高 速度

7.1 这里使用 https://www.ipaddress.com/ ,分别查询下面的域名 对应的ip 然后插入到 /etc/host 下面

192.30.253.112 github.com
151.101.185.194 github.global.ssl.fastly.net
192.30.253.120 codeload.github.com

7.2 重启服务 sudo /etc/init.d/networking restart

  1. 编译so文件,在目录bazel-bin/tensorflow/contrib/android 找到编译的 libtensorflow_inference.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=arm64-v8a

#根据需要修改对应的参数,主要就是target 板子的CPU架构

  1. 编译jar包,在目录 bazel-bin/tensorflow/contrib/android 下找到 libandroid_tensorflow_inference_java.jar,拷贝到具体的位置备用。
 bazel build  //tensorflow/contrib/android:android_tensorflow_inference_java

编译 android_demo

 bazel build -c opt --config=arm-v8a //tensorflow/examples/android:tensorflow_demo

编译Android版本TensorFlow相关推荐

  1. 【ijkplayer】编译 Android 版本的 ijkplayer ② ( 切换到 k0.8.8 分支 | 执行 init-android.sh 脚本进行初始化操作 )

    文章目录 一.进入 ijkplayer-android 目录 二.切换到 k0.8.8 分支 三.执行 init-android.sh 脚本进行初始化操作 参考 https://github.com/ ...

  2. 【错误记录】编译 Android 版本的 ijkplayer 报错 ( ./init-android.sh: 第 37 行: cd: android/contrib/: 没有那个文件或目录 )

    文章目录 一.报错信息 二.解决方案 一.报错信息 编译 Android 版本的 ijkplayer 时 , 执行 init-android.sh 脚本 , 报如下错误 ; root@octopus: ...

  3. 编译android版本binutils工具

    编译android版本binutils工具 准备 编译环境:ubuntu 20.04.2 编译器版本:ndk-24.0.8215888 binutils版本: 2.33.1 1. 生成android ...

  4. 编译Android版本的Poco库

    编译Android版本的Poco库 项目需要在android平台使用Poco库,花了些时间成功编译,记录下来以备后用. 编译库总是跟版本有关:编译主机系统为Ubuntu16.04 64位,Poco的版 ...

  5. 编译android版本sdl2

    一.SDL官网地址:Simple DirectMedia Layer - Homepage 二.SDL git地址:GitHub - libsdl-org/SDL: Simple Directmedi ...

  6. WebRTC:下载与编译Android版本的WebRTC(M66)

    WebRTC是Google公司开源的一套免费的网页实时音视频通信的解决方案,可以说性能非常强大.可以在Google WebRTC网站https://webrtc.org上下载并使用. 源码 下载 源码 ...

  7. 【ijkplayer】编译 Android 版本的 ijkplayer ④ ( 安装 make yasm 软件 | 执行 compile-ffmpeg.sh all 命令编译 ffmpeg )

    文章目录 一.安装 make 软件 二.安装 yasm 软件 三.执行 compile-ffmpeg.sh all 命令编译 ffmpeg 参考 https://github.com/bilibili ...

  8. 【错误记录】编译 Android 版本的 ijkplayer 报错 ( You must define ANDROID_NDK before starting. | 下载指定版本 NDK )

    文章目录 一.报错信息 二.解决方案 一.报错信息 在编译 ijkplayer 的过程中 , 出现 root@octopus:~/ijkplayer/ijkplayer-android/android ...

  9. 【ijkplayer】编译 Android 版本的 ijkplayer ⑥ ( 进入 ijkplayer-android/android 目录 | 执行 compile-ijk.sh 脚本完成编译 )

    文章目录 一.进入 ijkplayer-android/android 目录 二.执行 compile-ijk.sh 脚本 参考 https://github.com/bilibili/ijkplay ...

最新文章

  1. 2021年大数据Spark(二十):Spark Core外部数据源引入
  2. vue-music 音乐网站
  3. POJ 3376 Finding Palindromes(扩展kmp+trie)
  4. leetcode212. 单词搜索 II
  5. 召回 粗排 精排,如何各司其职?
  6. MySQL子查询作为列_mysql 列子查询
  7. 鸿蒙开源源码,基于鸿蒙系统开源项目OpenHarmony源码静态分析
  8. BeginnersBook Java 示例
  9. php文本框清除格式,php如何清除HTML格式
  10. 学习PriorityQueue源码
  11. Mapreduce和yarn-内存设置
  12. 粒子群算法(1)----粒子群算法简单介绍
  13. python中node函数的意思_Node.js 函数
  14. 智能优化算法:萤火虫算法-附代码
  15. GB35114---基于pjsip协议库开发问题
  16. 物联网是什么,和互联网之间主要有什么区别
  17. python开源报表工具_12个最好的开源报表工具
  18. 有限元方法之三角形元任意阶的Lagrange型形状函数
  19. 大数据面试知识点整理合辑
  20. 从代码层面分析STM32 标准库和HAL库的差异

热门文章

  1. jQuery教程2---隐藏p标签内容-按钮
  2. URAL 1036 Lucky Tickets
  3. linux fedora下实现锐捷认证
  4. liunx java font_Linux下JDK中文字体乱码 | 学步园
  5. 带哨兵节点的链_关于链表中哨兵结点问题的深入剖析
  6. 怎么把外部参照合并到图纸_做电气设计的,拿到建筑图,怎么下手呢?
  7. mysql切换到使用openssl,MySQL主从复制+OpenSSL
  8. golang 怎么把指针内容也打印出来_FDM工艺3D打印出来的模型表面粗糙怎么解决?...
  9. 图的广度优先搜索(bfs)以及深度优先搜索(dfs)
  10. php sha256hex,crypto/sha256(加密/sha256)