Чтобы писать на языке C, одного редактора недостаточно. Редактор помогает набрать код, а компилятор превращает файл main.c в исполняемую программу. В этом уроке разберем, что выбрать новичку: GCC, Clang или онлайн-компилятор, как проверить установку и как понять, что проблема именно в компиляторе, а не в вашем C-коде
Мы не будем ставить все подряд. Цель проще: выбрать один рабочий путь, собрать маленький main.c и увидеть, что программа запускается
- Что получится в конце
- Компилятор, редактор и IDE: не одно и то же
- Что выбрать: GCC, Clang или онлайн-компилятор
- Windows: MSYS2 и GCC
- macOS: Command Line Tools и Clang
- Linux: GCC или Clang из пакетного менеджера
- Онлайн-компилятор: когда это нормально
- Проверочный main.c
- Что означают флаги компиляции
- Типичные ошибки установки
- Как понять, что среда готова
- Что может быть еще интересно по этой теме
- Что почитать дальше по C
Что получится в конце
После установки вы сможете выполнить одну из команд:
gcc --version
или:
clang --version
Затем собрать файл:
gcc -Wall -Wextra -std=c17 main.c -o hello
или:
clang -Wall -Wextra -std=c17 main.c -o hello
И запустить готовую программу:
./hello
Если это работает, у вас есть рабочая среда для первых уроков по C
Компилятор, редактор и IDE: не одно и то же
Новички часто ставят VS Code и думают, что компилятор уже появился. VS Code, Sublime Text, Zed или другой редактор не компилирует C сам по себе. Он может подсвечивать код, запускать команды, показывать ошибки, но где-то в системе все равно должен быть GCC, Clang или другой компилятор
IDE вроде Visual Studio, Xcode или CLion часто устанавливает и настраивает toolchain удобнее. Но для понимания C полезно хотя бы один раз собрать файл руками из терминала. Тогда становится ясно, что происходит между main.c и hello
В этом уроке мы держим фокус на командной строке, потому что она одинаково хорошо объясняет Windows, macOS, Linux и серверные сценарии
Что выбрать: GCC, Clang или онлайн-компилятор
Если вы на Linux, чаще всего начинайте с GCC из пакетного менеджера. Он привычен в учебниках, системных примерах и материалах по C
Если вы на macOS, проще начать с Clang из Command Line Tools for Xcode. На macOS команда gcc нередко фактически ведет к Apple Clang, поэтому лучше честно проверять clang --version
Если вы на Windows, удобный учебный путь — MSYS2 с UCRT64 окружением и GCC. Он дает нормальный терминал, пакетный менеджер и современный mingw-w64 GCC
Если вы пока не готовы ставить ничего локально, используйте онлайн-компилятор. Это нормально для первого знакомства, но онлайн-среда скрывает важные детали: где лежит файл, какой компилятор используется, какие флаги включены и как запускается готовая программа
Windows: MSYS2 и GCC
Для Windows я бы выбрал MSYS2 как самый практичный путь для учебного GCC. Официальный сайт: https://www.msys2.org/
Общий порядок такой:
- Установить MSYS2 с официального сайта
- Открыть MSYS2 shell и обновить пакеты
- Установить GCC для UCRT64 окружения
- Открыть именно MSYS2 UCRT64 terminal
- Проверить
gcc --version
Команды в MSYS2 обычно выглядят так:
pacman -Syu
pacman -S mingw-w64-ucrt-x86_64-gcc
После установки важно открыть терминал UCRT64, а не случайный базовый MSYS prompt. Это частая ловушка: пакет установлен, но команда gcc не находится или находится не там
Проверка:
gcc --version
Затем создайте main.c и соберите:
gcc -Wall -Wextra -std=c17 main.c -o hello
./hello
В Windows-терминале вне MSYS2 запуск может выглядеть как hello.exe. Если вы только учитесь, проще выполнять первые команды прямо в UCRT64-терминале, чтобы не бороться с PATH раньше времени
macOS: Command Line Tools и Clang
На macOS самый простой путь — установить Command Line Tools for Xcode. Apple поддерживает установку через терминал:
xcode-select --install
После установки проверьте:
clang --version
Соберите пример:
clang -Wall -Wextra -std=c17 main.c -o hello
./hello
На macOS команда gcc --version может тоже работать, но часто это Apple Clang под совместимым именем. Это не трагедия. Для первых уроков Clang отлично подходит, просто не удивляйтесь, если надпись версии говорит про Apple Clang, а не GNU GCC
Если вы позже захотите именно GNU GCC, можно поставить его отдельно, например через Homebrew. Но для первого курса по C это обычно не нужно
Linux: GCC или Clang из пакетного менеджера
На Linux чаще всего ставят GCC через пакетный менеджер дистрибутива. Названия пакетов отличаются, поэтому лучше использовать документацию вашего дистрибутива
На Debian/Ubuntu часто нужен пакетный набор для сборки:
sudo apt update
sudo apt install build-essential
Проверка:
gcc --version
Для Clang:
sudo apt install clang
clang --version
Если вы используете Fedora, Arch, openSUSE или другой дистрибутив, команды будут другими. Смысл остается тот же: установить compiler toolchain, проверить версию, собрать main.c
Онлайн-компилятор: когда это нормально
Онлайн-компилятор полезен, если вы хотите быстро проверить синтаксис C без установки среды. Это хороший запасной вариант для первого вечера, учебного компьютера или планшета
Но у онлайн-среды есть ограничения. Вы не всегда знаете точную версию компилятора, не всегда управляете флагами, не видите реальную структуру проекта и не учитесь запускать готовый бинарник в своей системе
Поэтому онлайн-компилятор подходит для знакомства, но не должен быть единственным способом обучения. Как только вы поняли первый пример, лучше поставить локальный GCC или Clang
Проверочный main.c
Создайте файл:
#include <stdio.h>
int main(void)
{
printf("Compiler works\n");
return 0;
}
Соберите через GCC:
gcc -Wall -Wextra -std=c17 main.c -o hello
Или через Clang:
clang -Wall -Wextra -std=c17 main.c -o hello
Запустите:
./hello
Ожидаемый вывод:
Compiler works
Эта проверка лучше, чем просто gcc --version, потому что она подтверждает весь путь: компилятор найден, стандартная библиотека подключается, линковка проходит, исполняемый файл запускается
Что означают флаги компиляции
Флаг -Wall включает много базовых предупреждений. Название звучит как «все warnings», хотя технически это не абсолютно все предупреждения, но для старта он нужен почти всегда
Флаг -Wextra добавляет еще часть полезных предупреждений. Новичку он помогает раньше увидеть сомнительные места в коде
Флаг -std=c17 задает стандарт языка C. Так примеры становятся предсказуемее: вы понимаете, под какой версией языка проверяете код
Флаг -o hello задает имя результата. Без него на Unix-подобных системах часто появляется a.out, и это сбивает с толку
Хорошая учебная команда:
gcc -Wall -Wextra -std=c17 main.c -o hello
Она чуть длиннее, чем gcc main.c, зато сразу учит нормальной привычке
Типичные ошибки установки
gcc: command not found Компилятор не установлен или терминал не видит путь к нему. На Windows проверьте, что открыт MSYS2 UCRT64 terminal. На macOS проверьте Command Line Tools. На Linux проверьте установку пакетов
clang: command not found Clang не установлен или Command Line Tools не активны. На macOS попробуйте xcode-select --install
stdio.h not found Проблема не в вашем #include, а в toolchain: не установлены заголовки стандартной библиотеки или среда собрана неполно
Permission denied при запуске Проверьте, что запускаете собранный файл из текущей папки. На macOS/Linux обычно нужна команда ./hello
Собрали hello, но запускается старая версия Вы могли не пересобрать файл после изменения main.c или запускать другой hello из другой папки. Проверяйте текущую папку командой pwd и список файлов
Как понять, что среда готова
Среда готова, если выполняются четыре проверки:
gcc --versionилиclang --versionпоказывает версию- Файл
main.cсохраняется в понятной папке - Команда компиляции создает
helloилиhello.exe - Запуск программы выводит ожидаемый текст
Если одна из проверок не проходит, не переходите к указателям, массивам и файлам. Сначала добейте установку. В C плохая среда очень быстро маскируется под «я не понимаю язык», хотя проблема может быть просто в PATH или неправильном терминале
Что может быть еще интересно по этой теме
GCC и Clang дают одинаковый C? Для первых уроков почти да. Оба компилируют C-код, но могут отличаться сообщениями об ошибках, предупреждениями и расширениями
Нужно ли ставить Visual Studio для C? Можно, особенно если вы хотите работать в экосистеме Microsoft. Но для учебных GCC-команд на Windows MSYS2 обычно проще связать с материалами по системному C
Почему не начать сразу с IDE? IDE удобна, но она скрывает компиляцию. Ручная команда один раз показывает основу, а потом IDE становится понятнее
Можно ли использовать один компилятор для C и C++? GCC и Clang умеют компилировать оба языка, но команды и стандарты разные. Для C используйте .c файлы и флаги стандарта C, а не C++
Что почитать дальше по C
- Язык C с нуля: Hello World, gcc и первый файл — если хотите повторить первый цикл компиляции
- Типы, printf и scanf в C — следующий шаг после установки компилятора
- if, switch и циклы в C на простых задачах — когда первый ввод и вывод уже работают
- C и C++: в чем разница для новичка — если путаются
.c,.cpp, GCC и g++



