Для учёбы и большинства задач берите GCC или Clang. Оба бесплатные, понимают современные стандарты C17 и C23 и одинаково работают на Windows, macOS и Linux. На Windows проще всего поставить GCC через MSYS2 или компилятор MSVC из Visual Studio, на Mac Clang ставится одной командой xcode-select --install, на Linux GCC приезжает пакетом build-essential.
Если код пишется под микроконтроллер, нужен кросс-компилятор под его архитектуру, об этом отдельный раздел ниже. Чем занимается разработчик на Си и где этот язык живёт сегодня, мы разбирали в отдельной статье. Учить сам язык по программе с проверкой заданий можно на курсах по Си из нашего каталога.
Компиляторы ниже собирают и C, и C++: у GCC для плюсов есть команда g++, у Clang есть clang++, а cl из Visual Studio сам смотрит на расширение файла. Поэтому выбор один и тот же, на каком бы из двух языков вы ни писали, а чем отличается работа программиста C++, мы рассказывали отдельно.
Какой компилятор C выбрать под свою задачу

Короткая шпаргалка. Подробности по каждому компилятору и команды установки дальше по тексту.
| Задача | Что поставить | Почему |
|---|---|---|
| Учёба на Windows | GCC из MSYS2 | Те же команды, что в учебниках и на Linux |
| Программы под Windows, работа в Visual Studio | MSVC | Родной компилятор системы, отладчик в одном окне |
| Mac | Clang (Command Line Tools) | Уже настроен под систему, ставится одной командой |
| Linux, серверы | GCC, рядом Clang | GCC стоит в большинстве дистрибутивов, Clang даёт понятные ошибки |
| Попробовать код без установки | Онлайн-компилятор | Достаточно браузера |
| Микроконтроллеры | Arm GNU Toolchain, SDCC | Собирают код под чужую архитектуру |
| Авионика, медицина | CompCert | Корректность компиляции доказана математически |
Новичку хватает первой строки. Выбор компилятора почти не влияет на то, как вы учите язык: код по стандарту C собирается любым из списка, а разница проявляется в сообщениях об ошибках и в удобстве установки. Как выстроить само обучение, мы разбирали в статье как учить языки программирования самостоятельно.
Что делает компилятор C
Компилятор переводит текст программы в машинный код, который выполняет процессор. В C это четыре шага, и у GCC каждый можно увидеть отдельно.
- Препроцессор подставляет содержимое
#includeи раскрывает макросы:gcc -E hello.c -o hello.i. Из шести строк программы сprintfна Ubuntu 24.04 получилось 819 строк, почти всё это заголовокstdio.h. - Компиляция переводит C в ассемблер:
gcc -S hello.cсоздаёт файлhello.s. - Ассемблирование собирает объектный файл с машинным кодом:
gcc -c hello.cдаётhello.oна 1 528 байт. - Компоновка (линковка) склеивает объектные файлы с библиотеками в программу:
gcc hello.o -o hello.
Обычно все четыре шага запускаются одной командой gcc hello.c -o hello. Разделение нужно знать по другой причине: по тексту ошибки видно, на каком шаге сломалось. Ошибку с пометкой ld выдал компоновщик, и чинится она иначе, чем ошибка в самом коде.
Канал основателя Checkroi Вани Буявца3 700 человек читают мой Телеграм-канал про нейросетиСобрал промпты для Claude Code и ChatGPT, разборы ИИ-инструментов и лайфхаки по продвижению бизнеса в одном местеПрисоединитьсяКомпилятор и среда разработки (IDE) это разные программы. Visual Studio Code, Code::Blocks и CLion только вызывают компилятор, сами они код не собирают. Поэтому после установки редактора компилятор часто приходится ставить отдельно. По каким признакам выбирать сам редактор, мы показали в обзоре IDE и редакторов кода.
Сравнение популярных компиляторов C
Состояние проектов сверили по официальным сайтам 3 октября 2026 года.
| Компилятор | Лицензия | Системы | Стандарт по умолчанию | Сильная сторона |
|---|---|---|---|---|
| GCC | Свободная, GPL | Linux, Windows (MinGW-w64), macOS | C23 с версии 15, раньше C17 | Больше всего архитектур, стандарт в Linux |
| Clang | Свободная, Apache 2.0 | macOS, Linux, Windows | C17 или C23, зависит от версии | Понятные ошибки, санитайзеры |
| MSVC | Бесплатно в Visual Studio Community | Только Windows | C89 с расширениями, C11 и C17 по ключу | Интеграция с Windows и Visual Studio |
| Intel oneAPI (icx) | Бесплатная загрузка | Windows, Linux | Как у Clang, построен на LLVM | Оптимизация под процессоры Intel |
| TCC | Свободная, LGPL | Linux, Windows | C99 частично | Компилирует почти мгновенно |
| CompCert | Бесплатно для некоммерческого использования | Linux, macOS, Windows | Почти весь C11 | Формально проверенная корректность |
GCC
GNU Compiler Collection собирает ядро Linux и большинство пакетов в дистрибутивах, поэтому с ним рано или поздно сталкивается каждый администратор Linux. Последняя стабильная ветка на 3 октября 2026 года, по сайту проекта, GCC 16.2 от 7 августа.
С 15-й версии GCC по умолчанию компилирует C по стандарту C23, до этого по умолчанию стоял C17. На практике разница всплывает в старом коде: например, bool, true и false в C23 стали ключевыми словами, и старое объявление typedef int bool; перестаёт собираться с ошибкой о повторном объявлении типа.
Clang
Clang работает поверх LLVM, его использует Apple для macOS и iOS, Google для Android и Chrome. По новостям проекта, свежий релиз на 3 октября 2026 года LLVM 23.1.2 от 22 сентября.
Главная причина выбрать Clang новичку в том, что он объясняет ошибки человеческим языком: показывает место стрелкой и часто подсказывает исправление. Пример есть ниже, в разделе про флаги.
MSVC
Компилятор Microsoft входит в Visual Studio и в отдельные средства сборки. У него есть особенность, на которой спотыкаются студенты: без ключа /std MSVC компилирует C по стандарту C89 с собственными расширениями. Режимы C11 и C17 включаются ключами /std:c11 и /std:c17, это записано в справке Microsoft по параметру /std.
Массивов переменной длины (VLA) в MSVC нет и, по той же справке, не планируется. Если в учебнике встречается int a[n]; с n из ввода, в Visual Studio такой код не соберётся.
Intel oneAPI DPC++/C++ (icx)
Классический Intel C++ Compiler (icc) больше не выпускается: Intel убрала его из пакета oneAPI 2024.0 и предложила переходить на icx, построенный на LLVM. Совет «поставьте ICC для скорости» поэтому устарел.
Сам icx имеет смысл для вычислительных задач на процессорах Intel. Сайт Intel с российских адресов отвечает ошибкой доступа (код 403), так что скачать пакет напрямую может не получиться. Для учёбы он не нужен.
TCC и CompCert
Tiny C Compiler весит около 100 КБ и, по замеру автора, собирает код примерно в 9 раз быстрее GCC. Оптимизаций почти нет, а сам автор проектом больше не занимается, развитие идёт силами сообщества. Он годится для экспериментов и скриптов на C, для повседневной работы его обычно не берут.
CompCert доказывает, что машинный код делает ровно то, что написано в исходнике. Его используют там, где ошибка компилятора стоит дорого: в авионике, медицинской технике. Версия 3.18 вышла в августе 2026 года, коммерческие лицензии продаёт AbsInt.
Как установить компилятор C на Windows
На Windows два рабочих пути. Для учёбы удобнее GCC, для разработки программ под Windows удобнее MSVC.
GCC через MSYS2
MSYS2 это набор Unix-инструментов для Windows с менеджером пакетов. По инструкции на сайте MSYS2 нужна 64-битная Windows 10 версии 1809 или новее.
- Скачайте установщик с msys2.org и установите в папку по умолчанию
C:\msys64. - В конце установки откроется терминал UCRT64. Введите
pacman -S mingw-w64-ucrt-x86_64-gccи подтвердите установку, пакеты займут около 487 МБ. - Проверьте:
gcc --versionдолжен напечатать номер версии. - Чтобы
gccработал в обычной командной строке и в редакторе, добавьтеC:\msys64\ucrt64\binв переменную среды Path: «Параметры» → «Система» → «О системе» → «Дополнительные параметры системы» → «Переменные среды».
Связку MSYS2 и Visual Studio Code Microsoft описывает в документации VS Code. Как вообще настраивается редактор под язык, мы показывали на примере запуска файла Python в VS Code, с C логика та же.
MSVC из Visual Studio
- Скачайте Visual Studio Community или «Средства сборки для Visual Studio» на странице загрузок. Средства сборки ставят только компилятор, без редактора.
- В установщике отметьте рабочую нагрузку «Разработка классических приложений на C++». Компилятор C ставится вместе с ней, отдельного пункта для C нет.
- Откройте «Командная строка разработчика для VS» из меню «Пуск». В обычной командной строке
clне найдётся. - Соберите программу:
cl /W4 /std:c17 hello.c. Рядом появитсяhello.exe.
Порядок шагов совпадает с пошаговым руководством Microsoft, там же разобраны ошибки C1034 и LNK1104.
Компилятор C на macOS и Linux
На этих системах компилятор ставится одной командой из терминала.
| Система | Команда | Что получите |
|---|---|---|
| macOS | xcode-select --install |
Apple Clang и инструменты сборки без полного Xcode |
| Ubuntu, Debian | sudo apt install build-essential |
GCC, make и заголовки стандартной библиотеки |
| Fedora | sudo dnf install gcc |
GCC |
| Любой Linux, второй компилятор | sudo apt install clang или аналог |
Clang рядом с GCC |
На Mac команда gcc запускает Clang. Мы проверили на macOS с Apple Silicon: gcc --version печатает «Apple clang version 17.0.0». Настоящий GCC на Mac ставится отдельно, например через Homebrew, но для учёбы хватает и Clang.
Версия из пакетов дистрибутива отстаёт от свежей. В Ubuntu 24.04 apt ставит GCC 13.3, и он по умолчанию собирает код по стандарту C17. Мы проверили это командой echo | gcc -dM -E -x c - | grep __STDC_VERSION__, она вернула 201710L. Для учебника по C17 этого хватает, свежий GCC нужен, только если вы учите C23.
Как скомпилировать первую программу: команда и флаги
Сохраните код в файл hello.c:
#include <stdio.h>
int main(void) {
printf("Привет, компилятор!\n");
return 0;
}
И соберите с флагами, которые стоит включать всегда:
gcc -std=c17 -Wall -Wextra -O2 hello.c -o hello
./hello
Привет, компилятор!
На Windows программа запускается командой hello или .\hello.exe. Для Clang команда та же, только вместо gcc пишется clang.
Учебные программы стоит держать в Git с первого дня. Когда сборка внезапно ломается, проще откатиться к рабочей версии, чем искать правку глазами, а основы есть в статье Git простыми словами.
| Флаг | Что делает |
|---|---|
-o имя |
Имя готовой программы. Без него получится a.out или a.exe |
-std=c17 |
Фиксирует стандарт языка, чтобы код вёл себя одинаково на разных версиях компилятора |
-Wall -Wextra |
Включают предупреждения о подозрительном коде |
-O2 |
Оптимизация скорости, для учебных задач можно не ставить |
-g |
Добавляет отладочную информацию для gdb и lldb |
-fsanitize=address |
Ловит выход за границы массива и работу с освобождённой памятью во время запуска |
Предупреждения ловят ошибки до запуска. Вот программа, которая печатает неинициализированную переменную count. Без флагов оба компилятора собирают её молча, а с -Wall -Wextra пишут так.
GCC 13.3:
bug.c:5:5: warning: 'count' is used uninitialized [-Wuninitialized]
5 | printf("%d\n", count);
| ^~~~~~~~~~~~~~~~~~~~~
Apple Clang 17 вдобавок подсказывает исправление:
bug.c:5:20: warning: variable 'count' is uninitialized when used here [-Wuninitialized]
bug.c:4:14: note: initialize the variable 'count' to silence this warning
4 | int count;
| ^
| = 0
Полный список предупреждений есть в документации GCC, про санитайзер памяти подробно написано в документации Clang.
Онлайн-компиляторы C: когда хватает браузера
Онлайн-компилятор подходит, чтобы проверить кусок кода из учебника, решить задачу на олимпиадной платформе или показать пример коллеге. Для проекта из нескольких файлов и работы с файлами на диске нужен локальный компилятор. А если нужны задачи с разбором ошибок от преподавателя, посмотрите курсы C++ в каталоге.
| Сервис | Для чего удобен |
|---|---|
| Compiler Explorer | Сравнить, во что разные версии GCC, Clang и MSVC превращают один и тот же код |
| OnlineGDB | Запуск с вводом данных и пошаговой отладкой |
| OneCompiler | Быстро запустить программу, внутри GCC |
| JDoodle | Запуск и ссылка на код, чтобы поделиться |
| Ideone | Простой запуск со стандартным вводом |
Все пять сайтов 3 октября 2026 года открывались с российского сервера. На телефоне с Android код на C можно собрать в приложении Cxxdroid, внутри него тоже настоящий компилятор.
Компиляторы C для микроконтроллеров

Программа для Arduino, STM32 или датчика собирается на компьютере, а работает на другом процессоре. Такой компилятор называют кросс-компилятором, и под каждую архитектуру он свой.
- Arm GNU Toolchain (
arm-none-eabi-gcc) собирает код для STM32 и других чипов на ядрах Cortex-M. Это сборка GCC от Arm, сайт Arm с российских адресов отвечает ошибкой доступа, поэтому пакет удобнее ставить из репозитория дистрибутива или через MSYS2. - avr-gcc работает внутри Arduino IDE для плат на AVR, ставить его отдельно не нужно.
- SDCC собирает код для старых 8-битных архитектур, например 8051.
- IAR и Keil это коммерческие среды для промышленных проектов, со своими компиляторами и сертификацией для безопасных систем.
Чем программист микроконтроллеров отличается от прикладного разработчика и почему в этой работе C до сих пор основной язык, мы разбирали отдельно. Путь от первой платы до работы описан в плане как стать программистом на Си.
Частые ошибки при компиляции и что с ними делать

Большинство проблем новичков связаны не с кодом, а с установкой и командой сборки.
| Сообщение | Причина | Что сделать |
|---|---|---|
| «gcc не является внутренней или внешней командой» | Папки компилятора нет в Path | Добавить C:\msys64\ucrt64\bin в Path и открыть новое окно терминала |
| «cl не является внутренней или внешней командой» | Открыта обычная командная строка | Запустить «Командная строка разработчика для VS» |
undefined reference to `sqrt' |
Не подключена математическая библиотека | Добавить -lm в конец команды: gcc root.c -o root -lm |
undefined reference to `main' |
В файле нет функции main или собирается не тот файл |
Проверить имя файла в команде и написание main |
| Код из учебника не собирается в Visual Studio | MSVC по умолчанию в режиме C89, а VLA не поддерживает вовсе | Включить /std:c17, массивы переменной длины заменить на malloc |
Ошибка с bool после обновления GCC |
С 15-й версии по умолчанию C23 | Собирать с -std=c17 или убрать свой typedef int bool |
Ошибку с sqrt мы воспроизвели на GCC 13.3: без -lm компоновщик падает, с ним программа печатает 1.414 для числа 2. На macOS математическая библиотека подключена по умолчанию, поэтому там та же команда работает и без флага.
Как мы отбирали компиляторы
- Брали компиляторы, которые обновлялись в 2025–2026 годах или остаются стандартом в своей нише.
- Каждый факт о версии и стандарте сверили с официальным сайтом проекта 3 октября 2026 года.
- Примеры кода собрали на GCC 13.3 (Ubuntu 24.04) и Apple Clang 17 (macOS), вывод в статье скопирован из терминала.
- Доступность сайтов проверяли запросом с российского сервера.
Не вошли Turbo C и Borland C++: их последние версии вышли больше двадцати лет назад. Dev-C++ отдельным пунктом не стал: это среда разработки, внутри которой лежит старая сборка GCC. Классический Intel icc снят с выпуска.
Где освоить C и C++ системно
Поставить компилятор и собрать первую программу можно за вечер. Дальше начинается работа с памятью, указателями, сборкой многофайловых проектов и отладкой, и тут быстрее идти по программе с проверкой заданий.
Ниже подборка курсов по языку Си из каталога, курсы по C++ собраны в соседнем разделе. Если думаете о профессии, начните с плана как стать C++ разработчиком с нуля.
| Курс | Школа | Стоимость со скидкой | В рассрочку | Длительность | Обзор курса от Checkroi |
|---|---|---|---|---|---|
| Инженер-программист Перейти на сайт курса | 159 408 ₽ | 4428 ₽/мес. | 12 месяцев | Обзор курса | |
| Специалист по информационной безопасности: расширенный курс Перейти на сайт курса | 117 300 ₽ | 4018 ₽/мес. | 13 месяцев | Обзор курса | |
| Внедрение и работа в DevSecOps Перейти на сайт курса | 88 000 ₽ | 8800 ₽/мес. | 5 месяцев | Обзор курса | |
| Блокчейн Перейти на сайт курса | 168 768 ₽ | 4153 ₽/мес. | 4 месяца | Обзор курса | |
| Инженер-программист C++ Перейти на сайт курса | 7970 ₽ | 221 ₽/мес. | 1 месяц | Обзор курса |
Больше программ — в полном каталоге курсов по C (язык Си)




