В настоящее время я разрабатываю приложение C / C ++ со следующими характеристиками:
- Несколько целевых платформ - ARM (Raspbian) и производитель Модифицированный дистрибутив x86
- CMake используется для компиляции приложения C / C ++
- Кросс-компиляция для ARM и настроенного дистрибутива x86 => с CMake (и наборы инструментов для кросс-компиляции)
- Несколько зависимостей (другие репозитории github), которые кросс-компилируются отдельно (согласно README github). На них есть ссылки в CMake проекта. CMake решает, использовать ли библиотеки ARM или x86.
- Для развертывания Я копирую перекрестно скомпилированные библиотеки зависимостей в / usr / lib на цели. После этого кросс-компилированное приложение может быть запущено на цели.
Поскольку кросс-компиляция очень раздражает, потому что она полна ловушек, и в будущем мне понадобится еще много зависимостей, я решил переместить в другую систему сборки, чтобы упростить задачу:
Моя цель - получить файл rpm / deb, который можно легко установить на целевые системы
Через несколько часов исследования, я обнаружил, что с помощью кросс-компиляции Yocto можно легче управлять. Кроме того, можно создавать файлы deb / rpm / ..., которые можно устанавливать на цели.
В любом случае, насколько я понял, этот файл deb / rpm / ... можно установить только на дистрибутиве / образе yocto, который использовался для компиляции => Другими словами, мне нужно было бы написать sh совершенно новый дистрибутив для наших целей (raspberry & x86). К сожалению, это не вариант для меня (из-за пользовательской цели x86).
Вопрос 1: Правильно ли, что я должен заменить дистрибутивы на целях, чтобы установить созданные пакеты?
Вопрос 2: Есть ли способ создания кросс-скомпилированных файлов deb, которые можно установить в существующих дистрибутивах? Если да, что мне нужно сделать, чтобы добиться этого?
Я предполагаю, что моя текущая стратегия сборки не самая лучшая. Если у вас есть идеи, как сделать это лучше, не стесняйтесь, дайте мне знать.
Спасибо, Кристоф