首页 > 解决方案 > 在 Linux 上使用 bazel 构建 tensorflow r1.12 后 libtensorflow.so 和标头的位置

问题描述

在使用 cmake 构建早期版本的 tensorflow 遇到很多麻烦之后,我决定试一试 bazel,因为它应该能够创建一个共享库。根据官方推荐,我下载并构建了 bazel 0.15 然后使用

bazel build //tensorflow:libtensorflow.so

希望能够建立一个共享库。将近两个小时后,bazel 声称它能够构建 libtensorflow.so,但是,我在任何地方都找不到它。特别奇怪的是,整个目录只有大约 650MB 大。早些时候,我使用 cmake 构建了 tensorflow r1.10,它生成了一个 libtensorflow.so(由于其他原因,它在我的测试项目中不起作用),仅此一项就超过 800 MB;整个 cmake 目录的大小超过 11GB。

此外,我的测试项目(实际上可以在 Windows 下使用早期版本的 tensorflow)需要一些标头,例如

tensorflow/core/protobuf/meta_graph.pb.h

但似乎这个文件也没有生成,因为我找不到它。

有人可以告诉我获取共享库和必要标头的正确方法,或者在假定成功的 bazel 构建后我在哪里找到它们。

干杯

标签: linuxtensorflowbazel

解决方案


好的,所以我现在发现命令 find 不在符号链接中查找,因此我能够在其中一个符号链接目录中找到 libtensorflow.so (尽管它的大小要小得多,大小约为 100MB)和一些标头由 bazel 在您的工作路径中创建,即 bazel-bin、bazel-out 等。

然而,我现在遇到了另一个问题。正如我上面提到的,有一些标题但不是全部。例如我找不到

google/protobuf/stubs/common.h

有谁知道我怎样才能获得上面提到的所有其他标题,Eigen,Tensor 等等。我需要指定什么 bazel 目标,否则我如何获得它们?


推荐阅读