Как скомпилировать C++ через g++ и запустить программу в терминале?
Только начал, до этого писал онлайн в песочнице. Поставил на Linux компилятор, есть файл main.cpp:
#include <iostream>
int main() {
std::cout << "Hello, codechick!\n";
return 0;
}
Пробую g++ main.cpp, вроде что-то происходит, но как теперь это запустить? Откуда берётся a.out и как назвать программу нормально? И какие флаги стоит сразу включить новичку?
2 ответа
Всё правильно делаешь, осталось два шага.
Команда g++ main.cpp компилирует и по умолчанию создаёт исполняемый файл с именем a.out (историческое название, "assembler output"). Запускается он так:
g++ main.cpp
./a.out
./ означает «файл в текущей папке» — без него терминал не найдёт программу.
Чтобы задать своё имя файла, используй флаг -o:
g++ main.cpp -o hello
./hello
Номинальный набор флагов, который стоит включать сразу:
g++ -std=c++17 -Wall -Wextra -O2 main.cpp -o hello
./hello
-std=c++17— современный стандарт (иначе компилятор может работать в старом режиме)-Wall -Wextra— включить предупреждения, они ловят кучу ошибок новичков-O2— оптимизация (важно для олимпиад, ускоряет код)
Если несколько файлов — просто перечисли их: g++ a.cpp b.cpp -o prog.
Если хочется не вводить длинную команду каждый раз, заведи короткий скрипт или alias. Например, в ~/.bashrc:
alias gpp='g++ -std=c++17 -Wall -O2'
Тогда компиляция превращается в gpp main.cpp -o sol && ./sol. На олимпиадах это экономит время.