Dlaczego tak
Opcja -o podaje nazwę pliku wynikowego, więc g++ main.cpp -o program kompiluje i konsoliduje kod, tworząc plik wykonywalny program. Opcja -c zatrzymuje proces po kompilacji: powstaje tylko plik obiektowy, którego nie da się uruchomić. Zapis g++ -o main.cpp program jest groźny, bo plikiem wynikowym byłby main.cpp, a za plik wejściowy kompilator uznałby nieistniejący plik program.