Гид по технологиям

Как установить компиляторы C (GCC и Clang) в Linux

4 min read Программирование Обновлено 16 Dec 2025
Установка GCC и Clang в Linux
Установка GCC и Clang в Linux

Кратко

Программист за рабочим столом с ноутбуками и монитором

Если вы пишете на C или собираете программы из исходников в Linux, нужен компилятор C. Наиболее распространённые варианты — проверенный временем GCC и более новый Clang. Оба доступны через стандартные репозитории большинства дистрибутивов.

В этой статье вы найдёте команды установки для популярных дистрибутивов, примеры компиляции, краткое сравнение, памятку с командами, небольшое руководство по устранению ошибок и глоссарий терминов.

Что такое GCC и Clang

  • GCC — GNU Compiler Collection: набор компиляторов для C, C++, Fortran, Ada и других языков. Часто используется для сборки ядра Linux и многих проектов с открытым исходным кодом.
  • Clang — фронтенд для LLVM, созданный для совместимости с GCC, при этом стремится к более быстрой работе, лучшим диагностическим сообщениям и гибкой лицензии (Apache 2.0).

Установка GCC в Linux

GCC (и необходимые библиотеки для компиляции) обычно устанавливают пакетами, удобными для разработки.

На Debian и Ubuntu установите пакет build-essential — он включает gcc, make и основные заголовки libc:

sudo apt update
sudo apt install build-essential

На Fedora и других RPM-based дистрибутивах достаточно установить gcc:

sudo dnf install gcc

На Arch Linux:

sudo pacman -S gcc

В других дистрибутивах найдите пакеты по имени «GCC» или «gcc» в менеджере пакетов вашей системы.

Пример: компиляция программы

Содержимое файла hello.c:

#include 

int main(void) {
    printf("Hello, World!\n");
    return 0;
}

Компиляция с помощью GCC:

gcc hello.c

Если всё прошло успешно, в текущем каталоге появится исполняемый файл a.out. Запустите его так:

./a.out

Вывод GCC в Linux

Установка Clang в Linux

Clang доступен в репозиториях большинства дистрибутивов. Он совместим с синтаксисом команд GCC в большинстве случаев, поэтому переход обычно прост.

На Debian и Ubuntu установите пакет clang:

sudo apt update
sudo apt install clang

На Fedora/CentOS:

sudo dnf install clang

На Arch Linux / Manjaro:

sudo pacman -S clang

Компиляция той же программы с помощью Clang:

clang hello.c

Вывод Clang в Linux

Сравнение GCC и Clang — когда что выбирать

Коротко:

  • Совместимость: GCC historically has wider target support; Clang быстро догоняет.
  • Диагностика: Clang даёт более читаемые и подробные сообщения об ошибках.
  • Производительность компиляции: зависит от версии и целей; в реальности различия невелики для большинства проектов.
  • Лицензия: GCC — GPL, Clang — Apache 2.0.

Когда выбрать GCC:

  • Если проект явно требует GCC (или патчируется под GCC).
  • При сборке ядра Linux (официально долгое время рекомендован GCC, хотя поддержка Clang растёт).

Когда выбрать Clang:

  • Нужны более понятные сообщения об ошибках и быстрый цикл разработки.
  • Требуется гибкая лицензия для коммерческих модификаций.

Полезная памятка: команды и опции

  • Компиляция в исполняемый файл (по умолчанию a.out):
gcc hello.c
clang hello.c
  • Указать имя выходного файла:
gcc -o hello hello.c
clang -o hello hello.c
  • Включить отладочную информацию:
gcc -g -O0 -o hello hello.c
  • Включить предупреждения и строгую проверку:
gcc -Wall -Wextra -Werror -o hello hello.c
  • Компиляция C++:
g++ main.cpp
clang++ main.cpp

Отладка ошибок установки и типичные проблемы

  1. Пакет не найден в репозитории

    • Проверьте sudo apt update или эквивалент для вашей системы.
    • Убедитесь, что у вас включены стандартные репозитории (main, universe для Ubuntu).
  2. Отсутствуют заголовки libc (ошибки вроде stdio.h: No such file)

    • На Debian/Ubuntu установите build-essential, который включает libc-dev.
  3. Несовместимость кода при переключении между компиляторами

    • Проверьте используемые расширения языка; добавьте соответствующие флаги стандарта, например -std=c11.
  4. Старые версии компилятора

    • Используйте пакеты backports или репозитории поставщиков, если нужен более свежий GCC/Clang.

Простое дерево решений для выбора (Mermaid)

flowchart TD
    A[Нужно скомпилировать C] --> B{Проект требует конкретный компилятор?}
    B -->|Да: GCC| C[Установить GCC]
    B -->|Да: Clang| D[Установить Clang]
    B -->|Нет| E{Нужна лучшая диагностика?}
    E -->|Да| D
    E -->|Нет| C
    C --> F[Скомпилировать и тестировать]
    D --> F

Критерии приёмки

  • Компилятор установлен и доступен в PATH (проверка: gcc --version или clang --version).
  • Простая программа (hello.c) компилируется и запускается без ошибок.
  • Для сборки проекта доступны все необходимые заголовки и библиотеки.

Ролевые чек-листы (быстрые шаги)

  • Для новичка:

    • Обновить списки пакетов.
    • Установить build-essential (Debian/Ubuntu) или gcc (другие).
    • Скомпилировать hello.c.
  • Для разработчика проекта:

    • Установить версию компилятора, совместимую с CI.
    • Добавить в README команды компиляции и минимальные флаги.
  • Для системного администратора:

    • Автоматизировать установку через конфигурационные менеджеры (Ansible, Puppet).
    • Обеспечить репозитории актуальными версиями.

Глоссарий

  • GCC — набор компиляторов GNU для разных языков.
  • Clang — фронтенд компилятора в экосистеме LLVM.
  • LLVM — инфраструктура компиляторов и набор библиотек для оптимизаций.
  • build-essential — метапакет Debian/Ubuntu, содержащий инструменты для сборки C/C++ программ.

Дополнительные советы и альтернативы

  • Если вы собираете большие проекты, рассмотрите использование ccache для ускорения повторных сборок.
  • Для кросс-компиляции используйте таргетные пакеты (например, gcc-arm-none-eabi для ARM).
  • В средах сборки (CI) фиксируйте версии компилятора, чтобы избежать неожиданных различий.

Краткое резюме

Вы можете быстро установить GCC или Clang через стандартный менеджер пакетов. GCC остаётся стандартом де-факто для многих проектов, а Clang предлагает удобные диагностические сообщения и либеральную лицензию. Начните с установки и компиляции простого примера, затем настройте флаги компиляции и окружение по мере роста проекта.

Важно

Проверяйте версии компиляторов и системные заголовки при переносе проекта между машинами — это самая частая причина непредвиденных ошибок сборки.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Настроить воспроизведение видео в Google Slides
Руководство

Настроить воспроизведение видео в Google Slides

Как пожаловаться на публикацию в Facebook
Социальные сети

Как пожаловаться на публикацию в Facebook

Исправить высокую загрузку wmpnetwk.exe
Windows

Исправить высокую загрузку wmpnetwk.exe

Отмена и повтор действий в Word
Office

Отмена и повтор действий в Word

Убрать стрелки на ярлыках в Windows 7, 8, 10
Windows

Убрать стрелки на ярлыках в Windows 7, 8, 10

Установка Simple Keylogger на Linux — руководство
Безопасность

Установка Simple Keylogger на Linux — руководство