【问题标题】:When rebuilding tensorflow for android I'm getting a fatal error: 'stdlib.h' file not found为 android 重建 tensorflow 时出现致命错误:找不到“stdlib.h”文件
【发布时间】:2018-08-03 03:27:44
【问题描述】:

在 Ubuntu 16.04 中,当使用我的 protobuf 文件运行 Android Tensorflow TFDetect 实现时,我收到一条错误消息,指出 “没有注册 OpKernel 以支持 Op 'ceil'”。我必须修改移动构建以包含正确的 .cc 文件,然后在重建 Tensorflow 后继续运行以下命令来构建 jar:

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

然后我收到错误消息,指出由于缺少 stdlib.h,构建未完成:

在包含的文件中 外部/androidndk/ndk/sources/cxx-stl/gnu-libstdc++/4.9/include/algorithm:62: 在包含的文件中 外部/androidndk/ndk/sources/cxx-stl/gnu-libstdc++/4.9/include/bits/stl_algo.h:59: 外部/androidndk/ndk/sources/cxx-stl/gnu-libstdc++/4.9/include/cstdlib:72:10: 致命错误:找不到“stdlib.h”文件

我看到许多其他人被告知要使用预构建的二进制文件,但这对我不起作用,因为我需要一些额外的内核,这些内核被剥离用于移动设备。

有人对我如何构建必要的 android jar 有任何想法吗?

【问题讨论】:

    标签: android tensorflow python-3.5


    【解决方案1】:

    嗯,我发现了问题。在下面的链接中,它指出 NDK 版本 16 不支持 bazel。我最初安装了 14b,但是当我在 Android Studio 中打开我的项目时,它要求更新 NDK 并且我升级了。当我碰巧解决这个问题时,我注意到它是 16 版,然后最终删除了它并安装了 14 版。重建所有源代码,然后执行上述对 bazel 的调用后,一切顺利。我犯了一个愚蠢的错误。

    https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/android/README.md

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-02
      • 2013-05-15
      • 2018-07-24
      • 1970-01-01
      • 2016-12-21
      • 2019-07-17
      • 2019-03-11
      • 2021-03-06
      相关资源
      最近更新 更多