160 likes | 353 Vues
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.
E N D
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
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 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)