Проблемы кросс-сборки — исполнение бинарных файлов (Михаил Шалаев, OSSDEVCONF-2016)

Материал из 0x1.tv

Аннотация

Докладчик
Михаил Шалаев.jpg
Михаил Шалаев

За время существования свободного программного обеспечения создано огромное количество программных пакетов, сборка каждого из которых может иметь свои особенности. Разработано несколько популярных и широко распространенных систем конфигурации, большинство из которых предоставляет вариативность выбора целевой операционной системы. Понятие кросс-компиляции и необходимость сборки для целевой аппаратной платформы появились достаточно давно, но до сих пор многие разработчики програмного обеспечения предполагают, что их продукты будут собираться только на нативных системах. К сборке таких продуктов нужно подходить индивидуально.

В докладе раскрыты наиболее часто возникающие проблемы и возможные пути их решения.

Видео

on youtube

Слайды

Проблемы кросс-сборки — исполнение бинарных файлов (Михаил Шалаев, OSSDEVCONF-2016).pdf Проблемы кросс-сборки — исполнение бинарных файлов (Михаил Шалаев, OSSDEVCONF-2016).pdf Проблемы кросс-сборки — исполнение бинарных файлов (Михаил Шалаев, OSSDEVCONF-2016).pdf Проблемы кросс-сборки — исполнение бинарных файлов (Михаил Шалаев, OSSDEVCONF-2016).pdf Проблемы кросс-сборки — исполнение бинарных файлов (Михаил Шалаев, OSSDEVCONF-2016).pdf Проблемы кросс-сборки — исполнение бинарных файлов (Михаил Шалаев, OSSDEVCONF-2016).pdf Проблемы кросс-сборки — исполнение бинарных файлов (Михаил Шалаев, OSSDEVCONF-2016).pdf

Расширенные тезисы

При создании вычислительной машины новой архитектуры неизбежно возникает проблема её программного обеспечения. Работа посвящена проблемам создания пользовательского окружения в кросс-режиме для широко используемых и новых аппаратных платформ.

Исходные требования к системе создания пользовательского окружения следующие:

  • наименьшие затраты на адаптацию программного кода к новой платформе (максимальная совместимость с существующей кодовой базой);
  • ограниченный доступ к аппаратуре;
  • возможность быстрого масштабирования процесса разработки;
  • поддержка нескольких архитектур.

За время существования свободного программного обеспечения создано огромное количество программных пакетов, сборка каждого из которых может иметь свои особенности. Разработано несколько популярных и широко распространённых систем конфигурации, большинство из которых предоставляет вариативность выбора целевой операционной системы.

При постановке задачи сборки какого-либо из существующих Linux-дистрибутивов в кросс-режиме возникают дополнительные проблемы, связанные с особенностями сборочных сред этих дистрибутивов и де-факто отсутствием стандартов написания сборочных скриптов при добавлении пакетов. Наиболее часто встречаются следующие проблемы:

  • отсутствие опций для определения целевой платформы сборки при конфигурации;
  • явное определение переменных, использующихся при сборке (например, компилятора), без возможности переопределения извне, несмотря на имеющиеся механизмы динамического определения значений для этих переменных;
  • явное указание путей поиска исполняемых библиотек и заголовочных файлов.

Эти и подобные проблемы можно решить как правками «на лету», так и доработкой исходных текстов.

Ещё одна проблема, возникающая при кросс-сборке некоторых пакетов, заключается в необходимости запускать только что собранные исполняемые файлы. Это требуется в ряде случаев:

  • запуск собранных исполняемых программ в процессе проведения внутренних тестов (make check);
  • запуск программ для получения документации, например при использовании утилиты help2man;
  • запуск промежуточных программ, используемых при генерации файлов, необходимых для дальнейшей сборки программного пакета.

Если первую проблему можно решить отключением внутреннего тестирования пакета, то для решения остальных можно предложить следующие подходы:

  • сборка на вычислительном комплексе с подменой исполнения целевых бинарных файлов локальными;
  • сборка на вычислительном комплексе с исполнением целевых бинарных файлов в виртуальной машине (например, qemu);
  • сборка на вычислительном комплексе с исполнением целевых бинарных файлов на удалённой машине (использование remote shell);
  • сборка на вычислительном комплексе с целевой архитектурой, компиляция проводится кросс-компилятором с использованием distcc.

При использовании данных подходов появляется возможность удовлетворить требованиям, поставленным к конкретному конечному продукту. Выбирать из них следует в зависимости от доступных программных решений и имеющегося количества аппаратных комплексов.


Проблемы кросс-сборки — исполнение бинарных файлов (Михаил Шалаев, OSSDEVCONF-2016)!.jpg

Примечания и отзывы


Plays:54   Comments:0