Развертывание инструментария кросс-компиляции в Docker
Работа над набором инструментов для кросс-компиляции (для архитектуры riscv) с использованием проекта генератора Rocket-Chip. Это имеет много зависимостей, я разработал все на машине Ubuntu 16.04 LTS. И я хотел бы развернуть это на других машинах, на которых установлен старый дистрибутив Linux Debian (Linux 3.2).
Поскольку у меня было много проблем с зависимостями, я не мог правильно запускать свои тесты на машинах.
Пробовал виртуальную машину, работал, но производительность не была достаточно справедливой.
Мой вопрос заключается в том, существуют ли какие-либо другие методы для самостоятельного размещения набора инструментов с его источниками и зависимостями? Я слышал о Docker, и это используется для этого, но мне интересно, может ли это быть полезным в моем случае?
Любые идеи или направления приветствуются! Спасибо, С наилучшими пожеланиями.
1 ответ
Да, это один из сценариев докера.
Как вы уже упоминали, это инструмент для кросс-сборки. Таким образом, вы можете поместить свой исходный код для сборки на хосте, например /my_source_code_folder_host, а затем использовать следующую команду для сборки исходного кода.
docker run --rm -v /my_source_code_folder_host:/my_source_code_folder_container your_build_container_image
За your_build_container_image
нужно установить CMD
или же ENTRYPOINT
в dockerfile, и значение должно быть встроенной командой вашего набора инструментов, и по умолчанию он собирает исходный код в my_source_code_folder_container
выход будет также в my_source_code_folder_container
,
Как my_source_code_folder_container
настроен как том докера из папки my_source_code_folder_host
в хост-машине, поэтому вывод также будет виден в хосте.
В настоящее время это решение широко используется в команде CI некоторых полупроводниковых компаний для ежедневной кросс-компиляции.