使用自定义编译器编译Tensorflow程序

时间:2017-06-08 01:27:00

标签: tensorflow bazel

我正在尝试使用我公司的c编译器编译一个非常简单的Tensorflow程序(仅打印Tensorflow版本)但是我从Tensorflow的官方网站下载的libtensorflow.so与我们的c编译器不兼容。

我公司的c编译器几乎只是一个标准的gcc,但是gcc可以编译程序而我们的自定义编译器不能。

我的同事告诉我,我有两个选择:(1)用我们的编译器替换Bazel的编译器并使用Bazel编译程序或(2)首先用Bazel编译程序然后使用我们的编译器编译程序并包含pb。由Bazel生成的h文件(因为那些bazel文件只能由Bazel生成)。

我不知道怎么做(!)但是我试过(2)。 (2)的问题是我得到了错误,说protoc是由旧版本生成的,我不知道如何更改为正确的版本。

一些附加信息:(1)操作系统是Linux,(2)我没有使用sudo命令的权限,(3)我无法访问系统目录(例如/ usr / local)

我有什么希望能让这项工作成功吗?您可能会问为什么不用Bazel构建程序。这是因为我们公司的程序需要由我们公司的模拟器运行,模拟器只接受我们公司编译器生成的程序。

1 个答案:

答案 0 :(得分:1)

您唯一的选择是使用Bazel构建张量流,并告诉Bazel使用您的C / C ++编译器。最简单的方法是将CC和CXX环境变​​量设置为指向编译器的可执行文件。如果它真的是GCC的替代品,那么它应该可以工作,在构建之后你应该得到一个用自定义编译器编译的tensorflow二进制文件。

如果需要特殊标志,那么你应该在Bazel中制作一个自定义工具链来告诉它如何使用你的编译器,它有点复杂但不多。有关的说明位于https://github.com/bazelbuild/bazel/wiki/Building-with-a-custom-toolchain