GCC, G++ - podstawowe informacje, składnia podstawowych poleceń i możliwości
5 Etapów Pracy Kompilatora Preprocessing - prekompilacja Compilation – kompilacja właściwa Optimization - optymalizacja Assembling – asemblacja kodu Linking - linkowanie
5 Etapów Pracy Kompilatora Preprocessing: Tworzenie ostatecznego KODU ŹRÓDŁOWEGO aplikacji Dołączone są dyrektywy #include Podstawienia makroinstrukcji #define Opcja: -E
5 Etapów Pracy Kompilatora 2. Compilation: Kompilacja do kodu assemblera Wychwytywanie błędów Tworzony jest plik (.s) Opcja: -S
5 Etapów Pracy Kompilatora 3. Optimization: Zmiany w kodzie assemblera zwiększające efektywność kodu Optymalizacje przydziału rejestrów Usprawnianie sposobu obliczania adresów
5 Etapów Pracy Kompilatora 4. Assembling: Zamiana kodu assemblerowego na maszynowy 5. Linking: Linker szuka niezidentyfikowanych części kodu Kod maszynowy przypisywany do adresów Plik wykonywalny
Kompilowanie i wyjście -E - zatrzymanie na preprocessingu -S - zatrzymanie na etapie kodu assemblera -c - zatrzymanie na assemblacji -save-temps - kompilator nie usuwa plików pośrednich -x - określa język pliku wejściowego -o file_name - specyfikacja pliku wyjściowego Domyślnie: a.out Source_name.o Source-Name.s
Kompilowanie i wyjście
Szybkość działania programu Optymalizacja Szybkość działania programu Rozmiar pliku wynikowego Szybkość kompilacji
Optymalizacja -O0 – brak optymalizacji -O/-O1 – podstawowa optymalizacja -O2 – poziom ZALECANY, uzyskujemy korzystny kompromis pomiędzy szybkością działania, a długością kompilacji -O3 – poziom NIEZALECANY -Os – optymalizacja wielkości pliku
Opcje ostrzeżeń -Wall – włącza wszystkie możliwe ostrzeżenia dotyczące konstrukcji, które budzą jakiekolwiek kontrowersje -pedantic – badanie zgodności ze standardem ISO, ASCII -fsyntax-only – składnia
Opcje ostrzeżeń
Opcje ostrzeżeń
Opcje preprocesora i linkera -I h_file_path – dodaje pliki nagłówkowe w katalogu h_file_path -H – wypisze nazwy używanych plików (.h) -include file(s) – przetwarza najpierw pliki files, potem dopiero pliki wejściowe -std= / -ansi – określenie standardu -L – ścieżka do folderu z bibliotekami -l – biblioteki (.a)
Opcje preprocesora i linkera