【问题标题】:Tensorflow Lite Android GPU Delegate (C++) static build with bazel missing dependenciesTensorflow Lite Android GPU Delegate (C++) 静态构建,缺少 bazel 依赖项
【发布时间】:2026-01-24 03:45:02
【问题描述】:

我从 https://github.com/tensorflow/tensorflow 克隆了 Tensorflow 存储库

我像链接https://cppmagister.tistory.com/6中的第5步一样配置了bazel构建系统

  • NDK 版本 21.3.6528147
  • SDK 版本 30.0.3

我用这个命令构建张量流

bazel build -c opt --config android_arm64 tensorflow/lite/delegates/gpu:delegate

有3个文件

/tensorflow_src/bazel-out/arm64-v8a-opt/bin/tensorflow/lite/delegates/gpu/libdelegate.a
/tensorflow_src/bazel-out/arm64-v8a-opt/bin/tensorflow/lite/delegates/gpu/libdelegate.pic.a
/tensorflow_src/bazel-out/arm64-v8a-opt/bin/tensorflow/lite/delegates/gpu/libdelegate.so

我想使用静态库,所以我将 libdelegate.a 添加到我的项目中。我从源代码中添加了标题。当我构建项目时,出现如下错误。

external/com_google_absl/absl/container/internal/hashtablez_sampler.h:137: error: undefined reference to 'absl::lts_2020_02_25::container_internal::UnsampleSlow(absl::lts_2020_02_25::container_internal::HashtablezInfo*)'

我该如何解决这个问题?

【问题讨论】:

    标签: android c++ tensorflow tensorflow-lite


    【解决方案1】:

    可能 libdelegate.a 与 SHARED 依赖项(在本例中为 ABSL?)相关联,并且将包含 UNDEFINED 符号。

    您可以使用linux program nm查看库的符号表。

    我会使用“nm -DC libdelegate.a”——C 将分解 C++ 符号,而 D 将仅显示动态符号。如果没有动态符号,只需删除 D。

    标记为“U”的符号未定义,需要由另一个链接步骤提供或在运行时加载。

    【讨论】:

      最近更新 更多