Я выполняю кросс-компиляцию большого проекта на основе 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.