Глиф Учебники

Урок 1. Установка компилятора и первая программа

Курс «C++» · урок 1 из 10 · 5 минут чтения

В этом уроке на вашем компьютере появится компилятор, а вы напишете, соберёте и запустите первую программу на C++. Понадобится около получаса.

Что такое компилятор

Программа на C++ — это обычный текстовый файл с расширением .cpp. Компьютер не умеет выполнять такой текст напрямую. Его сначала переводит в машинный код компилятор, и получается исполняемый файл: в Windows — .exe, в Linux и macOS — файл без расширения. Этот файл уже можно запускать, и компилятор для этого больше не нужен.

Перевод называется сборкой (или компиляцией). Если в тексте программы ошибка, компилятор не соберёт её и напишет, в какой строке и что не так.

Текст программы hello.cpp Компилятор g++, clang, MSVC Исполняемый файл hello Linux, macOS hello.exe Windows Ошибка в тексте программы файла нет — компилятор пишет номер строки запуск $ ./hello Hello, world!
Компилятор переводит текст hello.cpp в исполняемый файл hello или hello.exe, который затем запускается; при ошибке в тексте исполняемый файл не создаётся.

Шаг 1. Поставьте компилятор

Способ зависит от системы на компьютере — выберите свою.

WindowsVisual Studio, Code::Blocks или MSYS2

Есть три удобных пути, все бесплатные:

  • Visual Studio Community — большая среда разработки от Microsoft со своим компилятором MSVC. При установке отметьте набор «Разработка классических приложений на C++».
  • Code::Blocks — небольшая среда разработки. Берите установщик, в имени которого есть mingw: в нём уже есть компилятор g++.
  • MSYS2 — набор программ, из которого ставится g++ для работы в командной строке и в редакторе VS Code.

По шагам каждый путь описан в справке Как установить компилятор C++ в Windows.

Дальше — для всех случаев

LinuxUbuntu, Debian, Linux Mint

Откройте терминал и выполните:

Bash
sudo apt update
sudo apt install g++

Первая команда скачивает свежий список пакетов, вторая ставит компилятор g++.

Дальше — для всех случаев

macOSинструменты командной строки Xcode

Компилятор clang ставится вместе с инструментами командной строки Xcode:

Bash
xcode-select --install

В macOS команда g++ тоже работает, но на самом деле запускает clang. Для этого курса разницы нет.

Проверьте, что компилятор на месте (в Windows — в командной строке, если ставили MSYS2 или добавили папку компилятора в переменную Path):

Bash
g++ --version

Команда выводит версию компилятора. Сообщение «команда не найдена» значит, что компилятор не установлен или система не знает, где он лежит.

Шаг 2. Напишите программу

Создайте файл hello.cpp в любом редакторе и наберите:

C++
#include <iostream>

int main() {
    std::cout << "Hello, world!\n";
    return 0;
}
Вывод
Hello, world!

Что значит каждая строка:

Каждая команда заканчивается точкой с запятой ;. Это самая частая ошибка новичка — забытая ;.

Шаг 3. Соберите и запустите

Как собрать программу — зависит от того, где вы её пишете.

Командная строкаLinux, macOS, Windows с MSYS2 или MinGW

Перейдите в папку с файлом (командой cd с путём к папке) и выполните:

Bash
g++ -std=c++17 -Wall -o hello hello.cpp
./hello

Первая команда собирает программу, вторая запускает. Что значат части команды:

ЧастьЧто делает
g++компилятор C++
-std=c++17стандарт языка C++17
-Wallвключает предупреждения о подозрительных местах в коде
-o helloимя исполняемого файла (output — выход)
hello.cppфайл с программой

В Windows исполняемый файл получит имя hello.exe, а запускается он командой hello.exe в командной строке или .\hello.exe в PowerShell.

Без -o файл получит имя по умолчанию: a.out в Linux и macOS, a.exe в Windows.

Дальше — для всех случаев

Visual StudioCtrl+F5

Создайте проект по шаблону «Консольное приложение» — в нём уже есть похожая программа. Запуск — Ctrl+F5 (запуск без отладки): окно с результатом не закроется, пока не нажата клавиша.

Дальше — для всех случаев

Code::BlocksF9

Создайте проект «Console application» на C++ или откройте файл .cpp и нажмите F9 — сборка и запуск одной клавишей.

Предупреждения (warning) — не ошибки: программа соберётся. Но предупреждение часто указывает на настоящую ошибку в логике, поэтому включайте -Wall и читайте их.

Комментарии

Компилятор пропускает комментарии — пояснения для людей:

C++
#include <iostream>

int main() {
    // Комментарий до конца строки
    std::cout << "Line 1\n";
    /* Комментарий
       на несколько строк */
    std::cout << "Line 2\n";
    return 0;
}
Вывод
Line 1
Line 2

Первые ошибки

Уберите ; после строки с cout и соберите программу снова. Компилятор напишет примерно так:

Текст
hello.cpp: In function 'int main()':
hello.cpp:4:35: error: expected ';' before 'return'

hello.cpp:4:35 — файл, строка 4, позиция 35. Ошибку ищите в этой строке или в строке выше: компилятор замечает пропуск только тогда, когда дошёл до следующей команды. Исправьте первую ошибку и соберите снова — остальные сообщения часто бывают следствием первой.

hello.cpp : 4 : 35 : error: expected ';' before 'return' hello.cpp 3 int main() { 4 std::cout << "Hello, world!\n" ; 5 return 0; hello.cpp файл 4 номер строки 35 позиция в строке return следующая команда
В сообщении hello.cpp:4:35 указаны файл, строка 4 и позиция 35 — место сразу за кавычкой, где не хватает точки с запятой; пропуск компилятор заметил на следующей команде return.

Другие частые ошибки на старте:

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

Коротко

Проверьте себя

1. С какой функции начинается выполнение программы на C++?
2. Что делает строка #include <iostream>?
3. Что значит ключ -o hello в команде g++ -o hello hello.cpp?
4. Компилятор пишет error: expected ';' before 'return'. Где искать ошибку?