Ошибка формата Exe c при кросс-компиляции с Bazel (TensorFlow) - PullRequest
0 голосов
/ 06 мая 2020

Я выполняю кросс-компиляцию большого проекта на основе Bazel (TensorFlow) с пользовательской цепочкой инструментов C ++ согласно этому руководству . Компиляция какое-то время идет хорошо, пока я не получу

/bin/bash: bazel-out/host/bin/path/to/file: cannot execute binary file: Exec format error

. Рассматриваемый двоичный файл меняется (так что, похоже, это общая проблема моей конфигурации кросс-компиляции) но одно всегда одно и то же; двоичный файл был скомпилирован для моей целевой платформы на базе ARM (как и следовало ожидать). Теперь проблема, конечно же, в том, что Bazel пытается выполнить этот двоичный файл на моей хост-платформе x86-64, что логически терпит неудачу. конец сообщения об ошибке:

Execution platform: @local_execution_config_platform//:platform

Это может быть полезно в поиске решения для вас, эксперты Bazel, достаточно любезные, чтобы помочь и прочитать (спасибо!), но поиск for @local_execution_config_platform//:platform внутри всего каталога проекта дает один бесполезный (для меня) результат (также он, кажется, связан конкретно с TensorFlow, поэтому я считаю отсутствие результатов поиска еще более странным). Конечно, я могу предоставить более подробную информацию об этом - или обо всем остальном - если вы спросите.

Моя конфигурация инструментальной цепочки соответствует собственному руководству Базеля, как я уже сказал. Мой вопрос: как правильно обрабатывать сценарий кросс-компиляции ios с помощью Bazel, чтобы этой ошибки не было? Нужно ли мне полностью подавлять выполнение этих двоичных файлов после того, как они были созданы, и если да, то как я могу go достичь этого?


PS: Для запись, цель, которую я создаю, - //tensorflow:libtensorflow.so.

PPS: есть двоичный файл, для которого я получаю другую ошибку, а именно bazel-out/host/bin/external/com_google_protobuf/protoc: 1: Syntax error: word unexpected (expecting ")"). Однако я предполагаю, что основная проблема такая же, поскольку это также двоичный файл ARM, который Bazel пытается выполнить в моей системе x86-64.

...