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 ;)