Kilka słów o tym, jak kompilować z terminala, bez użycia IDE. Coś dla prawdziwych twardzieli ;)

Szybki przykład kompilacji z użyciem g++

Mamy programik hello.cpp. Zeby go skompilować z terminala, wykonujemy  polecenie:

	> g++ -o Hello hello.h hello.cpp

w wyniku czego otrzymujemy gotowy plik wykonywalny Hello. Polecnie ma trzy części:

  • g++ – to nasz kompilator C++
  • -o – to flaga, która pozwala nadać wybraną nazwę plikowi wynikowemu. U nas – “Hello”
  • hello.h, hello.cpp – to źródła naszego programu

I to wszystko! Prawda, że proste?

Kompilacja typu Release i Debug

  • kompilacja naszego programu w trybie Release (maksymalna optymalizacja -O3) :
    	 > g++ -O3 -Wall -o Hello hello.h hello.cpp
  • kompilacja w trybie Debug (dodatkowe informacje do debuggowania -g):
    	 > g++ -g -Wall -o Hello hello.h hello.cpp

Ciekawsze parametry g++

  • – -help – lista kilku podstawowych flag kompilatora wraz z opisem
  • – -version – wersja kompilatora
  • -D nazwa – pozwala zdefiniować symbol. To to samo, co wstawić #define nazwa na początku pliku źródłowego
  • -o nazwa – pozwala nadać plikowi wynikowemu inną nazwę niż standardowe a.out
  • -Wall -Wextra -Wunused – rozszerzona lista warningów. Warto stosować, bo kompilator często widzi więcej od nas!
  • -O0, -O1, -O2, -O3 – optymalizacja pod względem wydajności. -O0 = bez optymalizacji
  • -Os – optymalizacja pod względem rozmiaru kodu. Jest to optymalizacja -O2 okrojona o te funkcje, które powodują przyrost ilości kodu, plus dodatkowe zabiegi zmniejszające ostateczny rozmiar programu
  • -g – dołącza informacje potrzebne do debuggowania

Zatrzymanie kompilacji:

  • -syntax-only – robi tylko sprawdzanie składni, nie builduje niczego
  • -E – robi tylko preprocessing i wyświetla na ekran. Można zobaczyć, jak zostają rozwinięte makra
  • -S – tylko kompiluje i zapisuje do plików .s. Można zobaczyć, jak kod wygląda w assemblerze
  • -c – tylko kompiluje i assembluje (tworzy pliki obiektowe .o). Nie linkuje. Można później zlinkować komendą g++ -o main main.o
  • -std=c++11 kompiluje zgodnie ze standardem C++11

Hurra!

Wiesz już wszystko co potrzeba, by kompilować programy z terminala. Teraz możesz zacząć pisać swoje własne IDE ;)

Related Posts: