Фирменный оптимизирующий компилятор языков C, C++, Fortran.
Вы здесь
Компилятор «LCC» (ТВГИ.00500-01)
Фирменный компилятор компании АО «МЦСТ» — разработчика архитектуры Эльбрус. Поддерживает языки программирования C, C++, Fortran. Во многом совместим с компилятором GCC (GNU Compiler Collection) — как по параметрам запуска, так и по GNU-расширениям языков. Обладает развитыми средствами оптимизации генерируемого машинного кода, позволяющими выбирать между быстродействием программы и её размером, а также длительностью компиляции.
Выпускается для компьютеров архитектуры Эльбрус и SPARC (МЦСТ-R). Поставляется в составе Системы программирования «Эльбрус» — штатно вместе с операционной системой либо или отдельно, по договору поставки. Поддерживает операционные системы семейства Linux и QNX; описание варианта для QNX «Нейтрино» в ТВГИ.00935-01.
Кросс-компилятор — это вариант компилятора, функционирующий на компьютерах архитектуры x86-64 и при этом выдающий машинный код архитектуры Эльбрус или SPARC. Получить кросс-компилятор можно по запросу в службу поддержки при наличии лицензии на право использования обычного компилятора (системы программирования) — для этого необходимо сообщить модель компьютера (процессора), наименование и номер версии целевой операционной системы. Вместе с кросс-компилятором для удобства может быть предоставлен архив файлов предустановленной системы «Эльбрус Линукс», если она является целевой системой для сборки программ.
Версия LCC | 1.28 | 1.27 | 1.26 | 1.25 | 1.24 | 1.23 | 1.21 | 1.19 | ||
---|---|---|---|---|---|---|---|---|---|---|
Год выпуска | 2023 | 2022 | 2021 | 2020 | 2019 | 2018 | 2016 | 2014 | ||
Поддержка C++ | GCC ≈ | 11.3 | 9.3 | 9.3 | 7.3 | 7.3 | 5.5 | 4.8 | 4.4 | |
libstdc++ | 6.0.29 | 6.0.28 | 6.0.28 | 6.0.24 | 6.0.24 | 6.0.21 | 6.0.18 | 6.0.11 | ||
C++23 | ± | ± | ± | ± | − | − | − | − | ||
C++20 | ± | ± | ± | ± | − | − | − | − | ||
C++17 | + | ± | ± | ± | ± | − | − | − | ||
C++14 | + | + | + | + | + | + | ±² | − | ||
C++11 | + | + | + | + | + | + | ±² | − | ||
C++03 | + | + | + | + | + | + | + | + | ||
C++98 | + | + | + | + | + | + | + | + | ||
Поддержка C | GCC ≈ | 11.3 | 9.3 | 9.3 | 7.3 | 7.3 | 5.5 | 4.8 | 4.4 | |
libc | 2.35 | 2.35 | 2.29 | 2.29 | 2.29 | 2.23 | 2.23 | 2.19 | ||
C18 | + | + | + | − | − | − | − | − | ||
C11 | + | + | + | + | +¹ | +¹ | +¹ | − | ||
C99 | + | + | + | + | + | + | + | + | ||
C90 | + | + | + | + | + | + | + | + | ||
Поддержка Fortran | GCC ≈ | 10.3⁴ | 10.3⁴ | 5.5³ | 5.5 | 5.5 | 4.9 | 4.9 | 4.4 | |
libfortran | 5.0.0 | 5.0.0 | 4.0.0 | 3.0.0 | 3.0.0 | 2.0.0 | 2.0.0 | 1.0.0 | ||
F18 | ± | ± | ± | ± | ± | − | − | − | ||
F08 | + | ± | ± | ± | ± | ± | ± | − | ||
F03 | + | ± | ± | ± | ± | ± | ± | − | ||
F95 | + | + | + | + | + | + | + | + |
Знак „+“ означает, что стандарт поддержан полностью, „±“ означает поддержку в экспериментальном режиме и/или неполностью — см. сноски и документацию, „−“ означает отсутствие поддержки данного языкового стандарта в данной версии компилятора.
¹ Стандарт C11 (ISO/IEC 9899:2011) в версиях LCC 1.21–1.24 был поддержан полностью за исключением необязательного расширения _Atomic
.
² Стандарты C++11 (ISO/IEC 14882:2011) и C++14 (ISO/IEC 14882:2014) в версии LCC 1.21 были поддержаны полностью в языковой части, однако в библиотечной части отсутствовала поддержка классов std::exception_ptr
и std::nested_exception
— это было обусловлено отсутствием поддержки zero cost exceptions (0eh) со стороны компилятора на тот момент.
³ Номинальная совместимость LCC 1.26 с gfortran-5.5.0, неполная совместимость с gfortran-6.5.0 и gfortran-7.3.0.
⁴ Номинальная совместимость LCC 1.27 / 1.28 с gfortran-10.3.0, неполная совместимость с gfortran-11.2.0 / 11.3.0.
Дистрибутивы
Компилятор поставляется в составе Системы программирования «Эльбрус».