Как установить компилятор C: GCC, Clang и онлайн-запуск

Чтобы писать на языке C, одного редактора недостаточно. Редактор помогает набрать код, а компилятор превращает файл main.c в исполняемую программу. В этом уроке разберем, что выбрать новичку: GCC, Clang или онлайн-компилятор, как проверить установку и как понять, что проблема именно в компиляторе, а не в вашем C-коде

Мы не будем ставить все подряд. Цель проще: выбрать один рабочий путь, собрать маленький main.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/

Общий порядок такой:

  1. Установить MSYS2 с официального сайта
  2. Открыть MSYS2 shell и обновить пакеты
  3. Установить GCC для UCRT64 окружения
  4. Открыть именно MSYS2 UCRT64 terminal
  5. Проверить 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 и список файлов

Как понять, что среда готова

Среда готова, если выполняются четыре проверки:

  1. gcc --version или clang --version показывает версию
  2. Файл main.c сохраняется в понятной папке
  3. Команда компиляции создает hello или hello.exe
  4. Запуск программы выводит ожидаемый текст

Если одна из проверок не проходит, не переходите к указателям, массивам и файлам. Сначала добейте установку. В 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

Оцените статью
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x