Tensorflow:与共享库的动态链接

时间:2017-03-28 17:04:23

标签: c++ tensorflow shared-libraries bazel

我正在使用Tensorflow的共享库。现在我将它作为子项目放在Tensorflow的源代码树中,并带有以下BUILD文件:

cc_binary(
    name = "recognizer.so",
    srcs = glob(["recognizer.cpp"]),
    linkshared = 1,
    deps = [
        "//tensorflow:сore"
    ],
)

所有内容都链接在一起,但我最终得到一个大小为94兆字节的共享库,而不依赖于libtensorflow_cc.so。实际上甚至没有libtensorflow_cc.so构建的二进制文件。

有一个目标//tensorflow:libtensorflow_cc.so。它被声明为cc_binary,这意味着(根据bazel)我不能依赖它。此外,这个目标实际上是非公开的,这意味着我可以构建它,但不能从另一个子项目中引用它。至少和bazel一样。

那么,有什么方法可以做这么简单的事情吗?

1 个答案:

答案 0 :(得分:2)

我无法评论为什么libtensorflow.so或libtensorflow_cc.so是:internal。但是你可以在Bazel中做一个技巧,以便能够依赖cc_binary创建的共享库:将其声明为cc规则的源。

UNION ALL

现在这是非常不受支持的:)事实上,我们将在接下来的几个月内改变我们处理共享库的方式,所以我几乎可以保证它会破坏。您可以订阅https://github.com/bazelbuild/bazel/issues/1920或关注bazel-dev @进行更新。