70 likes | 203 Views
Opcje kompilatora g77. g77 [ opcje ] pliki_źródłowe Opcje: -c tylko kompilacja bez linkowania -S kompilacja do kodu assemblera -E tylko pre-processing -o nazwa_pliku określanie nazwy modułu wynikowego (standard a.out)
E N D
Opcje kompilatora g77 g77 [opcje] pliki_źródłowe Opcje: -c tylko kompilacja bez linkowania -S kompilacja do kodu assemblera -E tylko pre-processing -o nazwa_pliku określanie nazwy modułu wynikowego (standard a.out) -x język określanie języka plików źródłowych; jeżeli nie podajemy to język jest określany na podstawie rozszerzenia pliku -B katalog dodaje katalog do ścieżki poszukiwań kompilatora -g dodaje informację diagnostyczną która może być użyta przez debugger -fbounds-check sprawdzanie przekroczenia zakresów indeksów tablic i łańcuchów
-Ikatalog dodaje katalog do ścieżki poszukiwań plików INCLUDE -Lkatalog dodaje katalog do ścieżki poszukiwań bibliotek -lbiblioteka dodaje bibliotekę zawartą w pliku biblioteka.so lub biblioteka.a przy linkowaniu -Dmakro definiuje makro i nadaje mu wartość 1 -Dmakro=wart definiuje makro i nadaje mu wartość wart -Umakro anulowanie definicji makro -Opoziom optymalizacja na poziomie poziom: O0 brak optymalizacji, O2 optymalizacja nieagresywna, O3 i wyżej optymalizacja agresywna
-ffree-form -fno-fixed-form swobodny format linii kodu źródłowego w stylu Fortranu 90 -ff90 dopuszcza pewne konstrukcje Fortranu 90 -ffvax kod źródłowy jest interpretowany jak przez kompilatory komputerów VAX -ffixed-line-length-n ustala długość linii kodu źródłowego na n. -fugly-assumed specyfikacja taka, jak A(1) oznaczna dowolną długość, jak specyfikacja A(*) -fonetrip pętla DO jest wykonywana przynajmniej raz, niezależnie od relacji między dolnym a górnym ogranicznikiem -fcase-upper wszystkie litery oprócz tych w łańcuchach są przekształcane w duże -fcase-lower wszystkie litery oprócz tych w łańcuchach są przekształcane w małe -fcase-preserve zachowuje oryginalną wielkość liter
-pedantic ostrzega gdy w kodzie źródłowych pojawiają się rozszerzenia ANSI Fotrtranu 77 -pedantic-errors jak wyżej ale rozszerzenia są traktowane jak błędy -w nie drukuje ostrzeżeń -Wno-globals nie ostrzega, jeżeli dana nazwa jest raz użyta jako funkcja lokalna a raz jako funkcja zewnętrzna lub podprogram -Wimplicit ostrzega, jeżeli do deklaracji danej zmiennej/funkcji jest wykorzystana reguła pierwszej litery -Wunused ostrzega, jeżeli zmienna jest zadeklarowana ale nigdy nie użyta -Wuninitialized ostrzega, jeżeli zmienna nie jest zainicjalizowana -Wall dwie poprzednie opcje razem -Wsurprising ostrzega, jeżeli pojawiają się “dziwne” konstrukcje, których interpretacja może zależeć od kompilatora.
Przykład kodu, gdzie zostanie ogłoszony fałszywy alarm, jeżeli użyjemy opcji –Wuninitialized SUBROUTINE MAYBE(FLAG) LOGICAL FLAG IF (FLAG) VALUE = 9.4 ... IF (FLAG) PRINT *, VALUE END Przykład wyrażenia, które może być różnie interpretowane (użyteczność opcji –Wsurprising): X**-Y*Z (X**(-Y))*Z g77 X**(-(Y*Z)) większość innych kompilatorów (zasady van Tassela: Nawiasy kosztują mniej niż błędy Również naczelna zasada van Tassela:BUZI (Bez Udziwnień Zapisuj Idioto)
-ffast-math optymalizuje wyrażenia arytmetyczne (może być “niebezpieczne”) -funroll-loops optymalizuje pętle DO ale nie DO WHILE -funroll-all-loops optymalizuje wszystkie pętle -Wl,opcje (oddzielone przecinkiem) przekazuje opcje do linkera (np. –Wl,-Bstatic zmusza do statycznego wbudowania bibliotek do kodu) -Wa,opcje to samo dla asemblera -Wp,opcje to samo dla preprocesora -Xlinker arg przekazuje argumenty arg do linkera