lcc
В данном репозитории предоставлено окружение для сборки и запуска программ под Эльбрус.
Работа в окружении
В контейнере или после вызова скрипта установки появится возможность вызывать кросскомпилятор. Для сборки c++ кода нужно использовать l++, а для c кода - lcc.
Для запуска бинарных файлов используется команда e2k. Она вызывает qemu с необходимыми ключами.
e2k a.out
Для использования систем сборок нужно устанавливать системные переменные CXX и CC как l++ и lcc. Сделать это можно так:
export CXX=l++
export CC=lcc
Путь к файлам компилятора: /opt/mcst/
Установка окружения
Если требуется установить окружение на систему, то сперва требуется установить необходимые пакеты. Пакеты для Ubuntu:
- build-essential
- ninja-build
- python3
- python3-pip
- libglib2.0-dev
После этого можно вызвать скрипт install.sh, и через некоторое время окружение будет установлено.
Он изменит файл /etc/environment и для применения изменений нужно будет либо перезапустить систему, либо перечитать environment файл с помощью команды source /etc/environment
. До перезапуска в новых терминальных сессиях обновлений не будет, и нужно будет каждый раз перечитывать файл с помощью source.
Использование контейнера
Установка контейнера из registry
Для установки контейнера из облака можно вызвать команду:
docker pull registry.gitflic.ru/project/mrognor/lcc-env/lcc-container
Локальная сборка контейнера
Для сборки контейнера локально можно использовать скрипт build.sh
Запуск контейнера
Для запуска контейнера используется скрипт container.sh. Он монтирует директорию из которой он запущен в контейнер и позволяет передавать файлы между контейнером и хостовой системой. Также скрипт делает так, что все файлы, созданные в контейнере, создаются из под пользовательской учетной записи.
При запуске приоритет будет отдан локально собранному контейнеру.
Таким образом, можно вести разработку в хостовой системе, а контейнер использовать только для сборки и запуска тестов.
Учетные данные контейнера
Базовый пользователь - ubuntu, пароль - 1234.
Root пользователь - root, пароль - root
Описание файлов
- build_image.sh - скрипт собирает образ из Dockerfile.
- container.sh - скрипт запускает контейнер.
- Dockerfile - в данном файле описан контейнер.
- install.sh - скрипт производит установку и настройку окружения в систему. Скрипт не устанавливает системные пакеты.
- delete.sh - скрипт откатывает все, что сделал install.sh
Версии
lcc - lcc-1.27.21.e2k-v6.5.10-e2c3
Статья на хабре
Чуть больше информации можно получить в статье на хабре.
Ресурсы
- Сайт мцст - https://dev.mcst.ru/
- Git Openelbrus - https://git.openelbrus.ru/mcst