bazel build aot с кросс-инструментом не удалось в platform.h фатальная ошибка файл 'mutex' не найден

Я пытаюсь выполнить кросс-компиляцию с помощью bazel, но не удалось выполнить фатальную ошибку в platform.h, файл mutex не найден. Я могу построить с помощью bazel без настройки кросс-компиляции, и я могу выполнить двоичный файл на хосте.

Моя среда ниже

  • цель: arm-linux-gnueabihf
  • tenorflow: Глава мастера cd5f3b67fca88217776522182481b0c128db5af9
  • bazel: 0.5.4 устанавливается с помощью apt-get install
  • # P5 #
    # P6 #

Мой тестовый код ниже.

#define EIGEN_USE_THREADS
#define EIGEN_USE_CUSTOM_THREAD_POOL

#include <iostream>
#include "third_party/eigen3/unsupported/Eigen/CXX11/Tensor"
#include "tensorflow/compiler/aot/tests/test_graph_tfmatmul.h" // generated

int main(int argc, char** argv) {
  Eigen::ThreadPool tp(2);  // Size the thread pool as appropriate.
  Eigen::ThreadPoolDevice device(&tp, tp.NumThreads());

  foo::bar::MatMulComp matmul;
  matmul.set_thread_pool(&device);

  // Set up args and run the computation.
  const float args[12] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
  std::copy(args + 0, args + 6, matmul.arg0_data());
  std::copy(args + 6, args + 12, matmul.arg1_data());
  matmul.Run();

  // Check result
  if (matmul.result0(0, 0) == 58) {
    std::cout << "Success" << std::endl;
  } else {
    std::cout << "Failed. Expected value 58 at 0,0. Got:"
              << matmul.result0(0, 0) << std::endl;
  }

  return 0;
}

Я изменил некоторые файлы для компиляции.

  1. # P7 #
    # P8 #
  2. Я сделал ошибку при редактировании файла CROSSTOOL. Если вы знаете подробности, см. Ниже.

Ниже приведена команда сборки, которую я сделал.

bazel build --copt = -Wno-c ++ 11-сужение --cxxopt = '- std = c ++ 11' // тензорный поток / компилятор / aot / tests: my_binary --host_crosstool_top = @ bazel_tools // инструменты / cpp : toolchain --crosstool_top = // инструменты / arm_compiler: toolchain --cpu = armeabi-v7a --verbose_failures

Наконец я получаю сообщение об ошибке ниже.

Произошла ошибка в «C ++ компиляция правила '@nsync //: nsync_cpp' не удалось (Выход 1):».

Из-за "./external/nsync//platform/c++11/platform.h:29:10: фатальная ошибка: файл 'mutex' не найден #include"

Файловый мьютекс находится в ./compilers/gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/include/c++/4.9.4/mutex.

Я думаю, что указанный выше путь указан в строке вывода сборки «-isystem external / linaroLinuxGcc49Repo / include / c ++ / 4.9.4»

Как я мог указать путь к мьютексу? для кросс-компиляции nsync?

x86-64 ubuntu14.04


person kiitosu    schedule 28.09.2017    source источник


Ответы (1)


https://github.com/bazelbuild/bazel/issues/3836

Благодарность!

(root) имя-пользователя @ имя-машины: repo [master] $ bazel build --copt = -Wno-c ++ 11-сужение --cxxopt = '- std = c ++ 11' // тензорный поток / компилятор / aot / tests: my_binary --host_crosstool_top = @ bazel_tools // tools / cpp: toolchain --crosstool_top = // tools / arm_compiler: toolchain --cpu = armeabi-v7a --verbose_failures ПРЕДУПРЕЖДЕНИЕ: / home / user-name / tensorflow / repo / tensorflow / core / BUILD: 1772: 1: in включает атрибут правила cc_library // tensorflow / core: framework_headers_lib: '../../external/nsync/public' разрешается как 'external / nsync / public' не ниже относительный путь его пакета 'tensorflow / core'. Это будет ошибкой в ​​будущем. Поскольку это правило было создано макросом cc_header_only_library, ошибка могла быть вызвана реализацией макроса в /home/user-name/tensorflow/repo/tensorflow/tensorflow.bzl:1029:30 ПРЕДУПРЕЖДЕНИЕ: / home / user- name / tensorflow / repo / tensorflow / contrib / learn / BUILD: 15: 1: в правиле py_library // tensorflow / contrib / learn: learn: target '// tensorflow / contrib / learn: learn' зависит от устаревшей цели '// tenorflow / contrib / session_bundle: exporter ': больше не поддерживается. Немедленно переключитесь на SavedModel. ВНИМАНИЕ: / home / user-name / tensorflow / repo / tensorflow / contrib / learn / BUILD: 15: 1: в правиле py_library // tensorflow / contrib / learn: learn: target '// tensorflow / contrib / learn: learn' зависит от устаревшей цели '// tensorflow / contrib / session_bundle: gc': больше не поддерживается. Немедленно переключитесь на SavedModel. ИНФОРМАЦИЯ: проанализированная цель // тензорный поток / компилятор / aot / tests: my_binary (загружено 0 пакетов). ИНФОРМАЦИЯ: обнаружена 1 цель ... ОШИБКА: /home/user-name/.cache/bazel/_bazel_user-name/6d2eb697f6f4dfadad89ea8a861fded5/external/nsync/BUILD:397:1: C ++ компиляция правила '@nsync_c //: nsync сбой (выход 1): сбой clang: ошибка выполнения команды (cd /home/user-name/.cache/bazel/_bazel_user-name/6d2eb697f6f4dfadad89ea8a861fded5/execroot/org_tensorflow && \ exec env - \ PWD = / proc \ / self PYTHON_BIN_PATH = / home / имя-пользователя / .pyenv / versions / anaconda3-4.4.0 / bin / python \ PYTHON_LIB_PATH = / home / имя-пользователя / .pyenv / versions / anaconda3-4.4.0 / lib / python3.6 / сайты-пакеты \ TF_NEED_CUDA = 0 \ TF_NEED_OPENCL = 0 \ tools / arm_compiler / linaro_linux_gcc / clang_bin / clang -target armv7a-arm-linux-gnueabif '--sysroot = external / linaroLinuxGcc49Repo / arm-linux-gnueabat' -abi = жесткий '-nostdinc -isystem /usr/lib/clang/3.6/include -isystem external / linaroLinuxGcc49Repo / lib / gcc / arm-linux-gnueabihf / 4. 9.4 / include -isystem external / linaroLinuxGcc49Repo / arm-linux-gnueabihf / libc / usr / include -isystem external / linaroLinuxGcc49Repo / lib / gcc / arm-linux-gnueabihf / 4.9.4 / include-fixed -isystem external / linaroLinuxGcc49Repo / linaroLinuxGcc49Repo / linaroLinuxGcc49Repo -linux-gnueabihf / libc / usr / include -isystem external / linaroLinuxGcc49Repo / include / c ++ / 4.9.4 -U_FORTIFY_SOURCE -fstack-protector -fPIE '-fdiagnostics-color = always' -Wall -Wunused-but-set-parameter - Wno-free-nonheap-object -fno-omit-frame-pointer -g0 -O2 -DNDEBUG -ffunction-section -fdata-section -Wno-c ++ 11-сужение -MD -MF bazel-out / clang_linux_armhf-py3- opt / bin / external / nsync / _objs / nsync_cpp / external / nsync / internal / sem_wait.d -iquote external / nsync -iquote bazel-out / clang_linux_armhf-py3-opt / genfiles / external / nsync -iquote external / bazel_tools -iquote bazel-out / clang_linux_armhf-py3-opt / genfiles / external / bazel_tools -isystem external / nsync / public -isystem bazel-out / clang_linux_armhf-py3-opt / genfiles / external / nsync / public -isystem external / bazel_tools / to ols / cpp / gcc3 -x c ++ '-std = c ++ 11' -DNSYNC_ATOMIC_CPP11 -DNSYNC_USE_CPP11_TIMEPOINT -I./external/nsync//platform/c++11 -I./external/nsync//platform/gcc -I ./external/nsync//platform/arm -I./external/nsync//public -I./external/nsync//internal -I./external/nsync//platform/posix '-D_POSIX_C_SOURCE = 200809L' -pthread -no-canonical-prefixes -Wno-builtin-macro-redefined '-D__DATE __ = "отредактировано"' '-D__TIMESTAMP __ = "отредактировано"' '-D__TIME __ = "отредактировано"' -c external / nsync / internal / sem_wait.c - o bazel-out / clang_linux_armhf-py3-opt / bin / external / nsync / _objs / nsync_cpp / external / nsync / internal / sem_wait.o) предупреждение: неизвестная опция предупреждения '-Wunused-but-set-parameter'; вы имели в виду "-Wunused-parameter"? [-Wunknown-warning-option] предупреждение: неизвестный параметр предупреждения '-Wno-free-nonheap-object'; Вы имели в виду "-Wno-sequence-point"? [-Wunknown-warning-option] В файле, включенном из external / nsync / internal / sem_wait.c: 16: ./external/nsync//platform/c++11/platform.h:29:10: фатальная ошибка: ' mutex 'файл не найден #include ^ 2 предупреждения и 1 ошибка. Целевой // тензорный поток / компилятор / aot / tests: my_binary не удалось построить ИНФОРМАЦИЯ: Истекшее время: 0,917 с, Критический путь: 0,15 с ОТКАЗ: Сборка НЕ ​​завершилась успешно

person kiitosu    schedule 29.09.2017