В този урок ще разберете как да компилирате C++ програми от командния ред в терминала на вашата система. Добре е да имате това умение. Големите IDE – та са сложни и за малки задачи или някакъв бърз тест понякога терминала е по бързото решение.
Макари двата компилатора: clang и gcc да са различни те са максимално съвместими по параметри на извикване. И за това ги разглеждаме заедно.
Нека имаме следния код на C++:
#include <print>
int main() {
std::print("fast test\n");
}Това е функционалност въведена в C++ 23. За това ще трябва да извикаме компилатора със следния флаг: -std=c++23
Текстови редактори в терминала
Изборът ни не е голям. Препоръчвам ви вградения редактор във всяка система наречен nano или pico. И двете са синоними. Просто едното е връзка към другото и стартира един редактор. Но той няма оцветяване на кода и не подържа команди с мишката.

Другия редактор ще трябва да си го изтеглите от тук. Или да потърсите подходящ начин за инсталиране на вашата дистрибуция. Той има оцветяване на кода и подържа команди с мишка. Нарича се (познайте 🙂 ) micro.

До колкото знам и двата редактора са налични за macOS и Linux. Но не и за Windows.
- От nano и pico се излиза с клавирната комбинация Control + X;
- От micro с Control + Q;
Команди в терминала
Ето първо някои команди, които могат да ви потрябват:
mv main main.out // преименува main в main.out
rm main.out // изтрива фаил
ls // показва списък с фаиловете в директорията
ls -l // дава подробен списък с атрибути на фаиловете и големината имПонякога се налага да зададете ръчно разрешение за стартиране на изпълним файл.
chmod +x main.out
chmod +x mainСлед това стартирате файла, за да видите резултата от неговото изпълнение:
./main // или
./main.outКомпилиране
clang++ main.cpp -o main -std=c++23Това извиква компилатора clang C++. Той компилира main.cpp в изпълнимия файл main.
-o main Това указва името на изходния файл: main
-std=c++23Това задава C++ стандарта, който използваме при компилацията.
Флагове за грешки
-Wall // основни предупреждения
-Wextra // още проверки (много полезни)
-Werror // всичко съмнително става compile error
-Wpedantic // спазване на стандарта (C/C++)Флагове за оптимизация
-O0 // без оптимизация (default за debug)
-O1 // базова оптимизация
-O2 // добра оптимизация (най-често използвана)
-O3 // агресивна оптимизация
-Ofast // максимална оптимизация, но нарушава стандарта
-Os // оптимизация за размер
-Oz // още по-малък бинарен файл (Clang)Пример:
clang++ main.cpp -O2 -Wall -Wextra -o main