cmake не создает проект кросс-компиляции с удаленным sysroot

    • #77782
      Николай
      Ключник

      sdv_cyborg

      20 сен 2022, 12:04
      Познаю новую область – разработку под embedded linux со всеми радостями кросс-компиляции и удаленной отладки. Целевая платформа – aarch64, компилятор под нее в составе SDK от разработчика.
      Нужно собрать библиотеку, у которой много зависимостей – конкретно OpenAL, OpenGL, X11 – самые важные для нее. Сам компилятор на рабочей машине уже настроил, с Eclipse связал, remote debug тоже организовал – все работает. Перешел к сборке библиотеки, и тут очевидно, что cmake-проект будет для сборки пытаться подтягивать зависимости с хоста, который x86, и сборка таким образом невозможна. Нашел решение, что нужно примонтировать файловую систему удаленной aarch64-машины, затем в CMAKE_SYSROOT указать рут удаленной файловой системы, что и сделал. Само собой, указал CMAKE_C/CXX_COMPILER/LINKER. Но библиотека все-равно не собирается – начала спотыкаться на попытке cmake протестировать компилятор с таким выводом:

      Determining if the C compiler works failed with the following input:
      Change Dir: /&lt,директория исходников на хосте&gt,/CMakeFiles/CMakeTmp
      Run Build Command(s): /mnt/&lt,удаленная файловая система&gt,/usr/bin/gmake -f MakeFile -cmTc_f5bb8/fast && /mnt/&lt,удаленная файловая система&gt,/usr/bin/gmake: &lt,кракозябры&gt, not found

      Таких ошибок с кракозябрами вываливает несколько строк. Пробовал добавлять к cmake аргумент –debug-trycompile, чтобы увидеть содержимое временных файлов – конкретно тестового файла для компиляции – но там ничего подозрительного не было.
      Что я делаю не так? Вопрос стоит остро, т.к. нужно дальше работать, а процесс встал из-за проблемы, описание которой даже затруднительно найти в сети.

      sdv_cyborg

      21 сен 2022, 14:46
      UPD: Тупость конкретно с этой ошибкой разобрал: sysroot задал удаленный, gcc с хоста, а какой make брать – не указал, вот он и пытался исполнить gmake с arm-машины.
      Проблемы другие. Линковщик жалуется на то, что не может найти libc, libgcc и объектные файл crt1.o, crti.o и т.д. Подозреваю, что проблема в том же, но дело в том, что build-essential установлен и на удаленной машине, и на хосте.
      Как в этой ситуации объяснить линкеру, что часть либ надо брать из удаленного сисрута (всякие OpenGL/OpenAL и т.д.), часть – из компилятора на хосте (libgcc и crt)?

Viewing 0 reply threads
  • Вы должны войти в систему, чтобы ответить в этой теме.
Интepecнoe нa фopумe:
Авторизация
*
*
Регистрация
*
*
*
Генерация пароля
×