Компиляция программ Tensorflow с помощью специального компилятора

Я пытаюсь скомпилировать очень простую программу Tensorflow (которая печатает только версию Tensorflow) с помощью компилятора c моей компании, но libtensorflow. Поэтому, скачанный с официального веб-сайта Tensorflow, несовместим с нашим компилятором c.

Компилятор c моей компании - это в значительной степени стандартный gcc, но gcc может скомпилировать программу, а наш собственный компилятор - нет.

Мой коллега сказал мне, что у меня есть два варианта: (1) заменить компилятор Bazel на наш компилятор и использовать Bazel для компиляции программы или (2) сначала скомпилировать программу с помощью Bazel, затем скомпилировать программу с помощью нашего компилятора и включить сгенерированные файлы pb.h от Bazel (потому что эти файлы bazel могут быть сгенерированы только Bazel).

Не знаю, как это сделать (!), Но попробовал (2). Проблема с (2) в том, что у меня есть ошибки, в которых говорится, что протокол был создан более старой версией, и я не уверен, как перейти на правильную версию.

Некоторая дополнительная информация: (1) ОС - Linux, (2) У меня нет прав на использование команд sudo, (3) Я не могу получить доступ к системным каталогам (например, / usr / local)

Есть ли надежда, что я смогу это сделать? Вы можете спросить, почему бы просто не собрать программу с помощью Bazel. Это потому, что программа нашей компании должна запускаться симулятором нашей компании, а симулятор принимает только программу, сгенерированную компилятором нашей компании.


person noob coder    schedule 08.06.2017    source источник
comment
Вы пробовали скомпилировать Базель из исходников? bazel.build/versions/master/docs/install-compile-source. html   -  person Hugues Fontenelle    schedule 08.06.2017
comment
Я использовал двоичный установщик (.sh) для установки Bazel. Будет ли иметь значение компиляция Bazel из исходников?   -  person noob coder    schedule 08.06.2017


Ответы (1)


Ваш единственный вариант - создать тензорный поток с помощью Bazel и указать Bazel использовать ваш компилятор C / C ++. Самый простой способ - установить переменные среды CC и CXX так, чтобы они указывали на исполняемый файл вашего компилятора. Если это действительно прямая замена GCC, тогда он должен работать, и после сборки вы должны получить двоичный файл tenorflow, скомпилированный с помощью вашего собственного компилятора.

Если требуются специальные флаги, вам следует создать в Bazel собственную цепочку инструментов, чтобы сообщить ему, как использовать ваш компилятор, это немного сложно, но не так много. Инструкции для этого находятся на https://github.com/bazelbuild/bazel/wiki/Building-with-a-custom-toolchain

person Dr. Snoopy    schedule 09.06.2017
comment
Другие источники говорят, что я могу редактировать только tools / cpp / CROSSTOOL, и мне не нужно делать все, как указано в руководстве. Есть CROSSTOOL и CROSSTOOL.tpl. Какой я должен изменить? Кроме того, что мне нужно сделать, чтобы указать Базелу использовать модифицированный мной CROSSTOOL? Я пытался скомпилировать Bazel с compile.sh, но Bazel игнорирует все, что я изменил в CROSSTOOL. - person noob coder; 09.06.2017