gfortran(1)
gfortran(1)
NAMN
gfortran - GNU Fortran-kompilatorn
SYNOPSIS
gfortran [-c|-S|-E]
[-g] [-pg] [-Onivå]
[-Wvarning...] [-pedantic]
[-Ikatalog...] [-Lkatalog...]
[-Dmakro[=definition]...] [-Umakro]
[-falternativ...]
[-mmaskinalternativ...]
[-o utdatafil] indatafil...
Endast de mest användbara alternativen listas här. Se nedan för återstående alternativ.
BESKRIVNING
Kommandot gfortran stöder alla alternativ som stöds av kommandot gcc. Endast alternativ som är specifika för GNU Fortran dokumenteras här.
Alla GCC- och GNU Fortran-alternativ accepteras både av gfortran och av gcc, liksom av andra drivrutiner som byggts samtidigt, exempelvis g++. När GNU Fortran läggs till i GCC-distributionen görs GNU Fortran-alternativ därför tillgängliga för alla relevanta drivrutiner.
I vissa fall har alternativ både positiv och negativ form. Den negativa formen av -ffoo är exempelvis -fno-foo. Denna manual dokumenterar endast en av dessa två former, den som inte är standard.
ALTERNATIV
Här följer en sammanfattning av alla alternativ som är specifika för GNU Fortran, grupperade efter typ. Förklaringar finns i följande avsnitt.
Fortran-språkalternativ
-fall-intrinsics -fbackslash -fcray-pointer -fd-lines-as-code -fd-lines-as-comments -fdec -fdec-structure -fdec-intrinsic-ints -fdec-static -fdec-math -fdec-include -fdefault-double-8 -fdefault-integer-8 -fdefault-real-8 -fdefault-real-10 -fdefault-real-16 -fdollar-ok -ffixed-line-length-n -ffixed-line-length-none -fpad-source -ffree-form -ffree-line-length-n -ffree-line-length-none -fimplicit-none -finteger-4-integer-8 -fmax-identifier-length -fmodule-private -ffixed-form -fno-range-check -fopenacc -fopenmp -freal-4-real-10 -freal-4-real-16 -freal-4-real-8 -freal-8-real-10 -freal-8-real-16 -freal-8-real-4 -std=std -ftest-forall-temp
Förbehandlingsalternativ
-A-fråga[=svar] -Afråga=svar -C -CC -Dmakro[=definition] -H -P -Umakro -cpp -dD -dI -dM -dN -dU -fworking-directory -imultilib katalog -iprefix fil -iquote -isysroot katalog -isystem katalog -nocpp -nostdinc -undef
Fel- och varningsalternativ
-Waliasing -Wall -Wampersand -Wargument-mismatch -Warray-bounds -Wc-binding-type -Wcharacter-truncation -Wconversion -Wdo-subscript -Wfunction-elimination -Wimplicit-interface -Wimplicit-procedure -Wintrinsic-shadow -Wuse-without-only -Wintrinsics-std -Wline-truncation -Wno-align-commons -Wno-tabs -Wreal-q-constant -Wsurprising -Wunderflow -Wunused-parameter -Wrealloc-lhs -Wrealloc-lhs-all -Wfrontend-loop-interchange -Wtarget-lifetime -fmax-errors=n -fsyntax-only -pedantic -pedantic-errors
Felsökningsalternativ
-fbacktrace -fdump-fortran-optimized -fdump-fortran-original -fdump-fortran-global -fdump-parse-tree -ffpe-trap=lista -ffpe-summary=lista
Katalogalternativ
-Ikatalog -Jkatalog -fintrinsic-modules-path katalog
Länkningsalternativ
-static-libgfortran
Körtidsalternativ
-fconvert=konvertering -fmax-subrecord-length=längd -frecord-marker=längd -fsign-zero
Interoperabilitetsalternativ
-fc-prototypes -fc-prototypes-external
Kodgenereringsalternativ
-faggressive-function-elimination -fblas-matmul-limit=n -fbounds-check -ftail-call-workaround -ftail-call-workaround=n -fcheck-array-temporaries -fcheck=<all|array-temps|bounds|do|mem|pointer|recursion> -fcoarray=<none|single|lib> -fexternal-blas -ff2c -ffrontend-loop-interchange -ffrontend-optimize -finit-character=n -finit-integer=n -finit-local-zero -finit-derived -finit-logical=<true|false> -finit-real=<zero|inf|-inf|nan|snan> -finline-matmul-limit=n -fmax-array-constructor=n -fmax-stack-var-size=n -fno-align-commons -fno-automatic -fno-protect-parens -fno-underscoring -fsecond-underscore -fpack-derived -frealloc-lhs -frecursive -frepack-arrays -fshort-enums -fstack-arrays
Alternativ som styr Fortran-dialekt
Följande alternativ styr detaljerna i den Fortran-dialekt som kompilatorn accepterar.
-ffree-form -ffixed-form Ange den layout som används av källfilen. Fri form introducerades i Fortran 90. Fast form användes traditionellt i äldre Fortran-program. Om inget av alternativen anges bestäms källformen av filändelsen.
-fall-intrinsics Detta alternativ gör att alla intrinsiska procedurer accepteras, även GNU-specifika utökningar. Detta kan vara användbart tillsammans med -std=f95 för att tvinga standardefterlevnad men ändå få tillgång till hela uppsättningen intrinsiska procedurer i gfortran.
Som följd ignoreras -Wintrinsics-std. Ingen användardefinierad procedur med samma namn som någon intrinsisk procedur anropas, utom när den uttryckligen deklareras som "EXTERNAL".
-fd-lines-as-code -fd-lines-as-comments Aktivera särskild behandling av rader som börjar med "d" eller "D" i källkod i fast form. Om -fd-lines-as-code anges behandlas de som om första kolumnen innehöll ett blanksteg. Om -fd-lines-as-comments anges behandlas de som kommentarrader.
-fdec DEC-kompatibilitetsläge. Aktiverar utökningar och andra funktioner som efterliknar standardbeteendet hos äldre kompilatorer, exempelvis DEC. Dessa funktioner är icke-standardiserade och bör undvikas.
Andra flaggor som aktiveras av detta alternativ är:
-fdollar-ok -fcray-pointer -fdec-structure -fdec-intrinsic-ints -fdec-static -fdec-math
Om -fd-lines-as-code eller -fd-lines-as-comments inte har ställts in, ställer -fdec även in -fd-lines-as-comments.
-fdec-structure Aktivera DEC:s "STRUCTURE" och "RECORD", samt "UNION", "MAP" och punkt, ".", som medlemsavskiljare utöver "%". Detta tillhandahålls endast för kompatibilitet. Fortran 90:s härledda typer bör användas där det är möjligt.
-fdec-intrinsic-ints Aktivera B/I/J/K-kind-varianter av befintliga heltalsfunktioner, exempelvis BIAND, IIAND och JIAND. En fullständig lista finns i den fullständiga dokumentationen.
-fdec-math Aktivera äldre matematiska intrinsiska funktioner, såsom COTAN och trigonometriska funktioner med grader, exempelvis TAND och ATAND, för kompatibilitet med äldre kod.
-fdec-static Aktivera DEC-liknande attributen STATIC och AUTOMATIC för att uttryckligen ange lagring av variabler och andra objekt.
-fdec-include Aktivera tolkning av INCLUDE som sats utöver tolkning som INCLUDE-rad. När INCLUDE tolkas som sats behöver INCLUDE inte stå på en enda rad och kan använda radfortsättning.
-fdollar-ok Tillåt $ som giltigt tecken, dock inte som första tecken, i symbolnamn. Symboler som börjar med $ avvisas eftersom det är oklart vilka regler som ska tillämpas för implicit typning, då olika leverantörer implementerar olika regler. Användning av $ i "IMPLICIT"-satser avvisas också.
-fbackslash Ändra tolkningen av omvända snedstreck i strängliteraler från ett enkelt omvänt snedstreck till C-liknande escape-tecken. Följande kombinationer expanderas:
\a \b \f \n \r \t \v \\ \0
De motsvarar ASCII-tecknen alert, backspace, form feed, newline, carriage return, horisontell tab, vertikal tab, omvänt snedstreck och NUL.
Dessutom översätts:
\xnn \unnnn \Unnnnnnnn
där varje n är en hexadecimal siffra, till Unicode-tecken som motsvarar angivna kodpunkter. Alla andra kombinationer av ett tecken föregånget av \ lämnas oexpanderade.
-fmodule-private Sätt standardåtkomsten för modul-entiteter till "PRIVATE". Entiteter som associeras via USE blir inte åtkomliga om de inte uttryckligen deklareras som "PUBLIC".
-ffixed-line-length- n Ange den kolumn efter vilken tecken ignoreras i typiska fastform-rader i källfilen. Om inte "-fno-pad-source" används antas mellanslag fylla ut kortare fastform-rader till denna längd.
Vanliga värden för n är 72, standard och standardvärde, 80, kortbild, och 132, motsvarande "extended-source"-alternativ i vissa kompilatorer. n kan också vara none, vilket betyder att hela raden är meningsfull och att fortsatta teckenkonstanter aldrig får implicita mellanslag tillagda. -ffixed-line-length-0 betyder samma sak som -ffixed-line-length-none.
-fno-pad-source Som standard antas fastform-rader vara utfyllda med mellanslag efter slutet på korta rader. Detta görs inte om -ffixed-line-length-0, -ffixed-line-length-none eller -fno-pad-source används. Med dessa alternativ får fortsatta teckenkonstanter aldrig implicita mellanslag tillagda för att fylla ut raden.
-ffree-line-length- n Ange den kolumn efter vilken tecken ignoreras i typiska friform-rader i källfilen. Standardvärdet är 132. n kan vara none, vilket betyder att hela raden är meningsfull. -ffree-line-length-0 betyder samma sak som -ffree-line-length-none.
-fmax-identifier-length= n Ange maximal tillåten identifierarlängd. Vanliga värden är 31, Fortran 95, och 63, Fortran 2003 och Fortran 2008.
-fimplicit-none Ange att ingen implicit typning är tillåten, om den inte åsidosätts av uttryckliga "IMPLICIT"-satser. Detta motsvarar att lägga till "implicit none" i början av varje procedur.
-fcray-pointer Aktivera Cray pointer-utökningen, som ger C-liknande pekarfunktionalitet.
-fopenacc Aktivera OpenACC-utökningar. Detta inkluderar OpenACC-direktiv av typen "!$acc" i fri form och "c$acc", "*$acc" och "!$acc" i fast form, "!$"-sentineller för villkorlig kompilering i fri form och "c$", "*$" och "!$" i fast form. Vid länkning ordnas också så att OpenACC-körtidsbiblioteket länkas in.
Observera att detta är en experimentell funktion, ofullständig och föremål för ändringar i framtida versioner av GCC.
https://gcc.gnu.org/wiki/OpenACC
-fopenmp Aktivera OpenMP-utökningar. Detta inkluderar OpenMP-direktiv av typen "!$omp" i fri form och "c$omp", "*$omp" och "!$omp" i fast form, "!$"-sentineller för villkorlig kompilering i fri form och "c$", "*$" och "!$" i fast form. Vid länkning ordnas också så att OpenMP-körtidsbiblioteket länkas in. Alternativet -fopenmp implicerar -frecursive.
-fno-range-check Inaktivera intervallkontroll av resultat från förenkling av konstanta uttryck under kompilering. GNU Fortran ger exempelvis normalt ett fel vid kompilering när uttrycket:
a = 1. / 0
förenklas. Med detta alternativ ges inget fel och "a" tilldelas värdet "+Infinity".
Om ett uttryck utvärderas till ett värde utanför relevant intervall ["-HUGE()":"HUGE()"] ersätts uttrycket av "-Inf" eller "+Inf" efter vad som är lämpligt. På liknande sätt leder:
DATA i/Z'FFFFFFFF'/
till heltalsöversvämning på de flesta system, men med -fno-range-check slår värdet runt och "i" initieras till -1.
-fdefault-integer-8 Sätt standardtyperna integer och logical till en 8 byte bred typ. Detta påverkar också typen hos heltalskonstanter som 42. Till skillnad från -finteger-4-integer-8 främjar det inte variabler med uttrycklig kind-deklaration.
-fdefault-real-8 Sätt standardtypen real till en 8 byte bred typ. Detta påverkar även typen hos icke-dubbla realkonstanter som 1.0. Alternativet främjar standardbredden hos "DOUBLE PRECISION" och dubbla realkonstanter som "1.d0" till 16 byte om möjligt. Om "-fdefault-double-8" anges tillsammans med "fdefault-real-8" främjas inte "DOUBLE PRECISION" och dubbla realkonstanter. Till skillnad från -freal-4-real-8 främjar detta inte variabler med uttryckliga kind-deklarationer.
-fdefault-real-10 Sätt standardtypen real till en 10 byte bred typ. Detta påverkar även typen hos icke-dubbla realkonstanter som 1.0. Det främjar standardbredden hos "DOUBLE PRECISION" och dubbla realkonstanter som "1.d0" till 16 byte om möjligt. Om "-fdefault-double-8" anges samtidigt främjas de inte. Till skillnad från -freal-4-real-10 främjar detta inte variabler med uttryckliga kind-deklarationer.
-fdefault-real-16 Sätt standardtypen real till en 16 byte bred typ. Detta påverkar även typen hos icke-dubbla realkonstanter som 1.0. Det främjar standardbredden hos "DOUBLE PRECISION" och dubbla realkonstanter som "1.d0" till 16 byte om möjligt. Om "-fdefault-double-8" anges samtidigt främjas de inte. Till skillnad från -freal-4-real-16 främjar detta inte variabler med uttryckliga kind-deklarationer.
-fdefault-double-8 Sätt typen "DOUBLE PRECISION" och dubbla realkonstanter som "1.d0" till en 8 byte bred typ. Gör inget om detta redan är standard. Detta alternativ hindrar -fdefault-real-8, -fdefault-real-10 och -fdefault-real-16 från att främja "DOUBLE PRECISION" och dubbla realkonstanter till 16 byte.
-finteger-4-integer-8 Främja alla "INTEGER(KIND=4)"-entiteter till "INTEGER(KIND=8)"-entiteter. Om "KIND=8" inte finns tillgängligt ges ett fel. Alternativet bör användas med försiktighet och passar kanske inte din kod. Möjliga problemområden är anrop till externa procedurer, justering i "EQUIVALENCE" och/eller "COMMON", generiska gränssnitt, BOZ-literal-konstantkonvertering och I/O. Granskning av mellanrepresentationen från -fdump-tree-original rekommenderas.
-freal-4-real-8 -freal-4-real-10 -freal-4-real-16 -freal-8-real-4 -freal-8-real-10 -freal-8-real-16 Främja alla "REAL(KIND=M)"-entiteter till "REAL(KIND=N)"-entiteter. Om "REAL(KIND=N)" inte är tillgängligt ges ett fel. Alla andra real-kind-typer påverkas inte. Dessa alternativ bör användas med försiktighet och passar kanske inte din kod. Möjliga problemområden är anrop till externa procedurer, justering i "EQUIVALENCE" och/eller "COMMON", generiska gränssnitt, BOZ-literal-konstantkonvertering och I/O. Granskning av mellanrepresentationen från -fdump-tree-original rekommenderas.
-std= std Ange den standard som programmet förväntas följa. Värdet kan vara något av:
f95 f2003 f2008 f2018 gnu legacy
Standardvärdet är gnu, vilket anger en övermängd av den senaste Fortran-standarden, inklusive alla GNU Fortran-utökningar. Varningar ges dock för föråldrade utökningar som inte rekommenderas för ny kod.
Värdet legacy är likvärdigt men utan varningar för föråldrade utökningar och kan vara användbart för gamla icke-standardiserade program. Värdena f95, f2003, f2008 och f2018 anger strikt överensstämmelse med respektive standard. Fel ges för alla utökningar utanför relevant standard, och varningar ges för Fortran 77-funktioner som är tillåtna men föråldrade i senare standarder.
Det föråldrade alternativet -std=f2008ts fungerar som alias för -std=f2018. Det finns endast kvar för bakåtkompatibilitet med äldre gfortran-versioner och bör inte längre användas.
-ftest-forall-temp Förbättra testtäckningen genom att tvinga de flesta forall-tilldelningar att använda temporärer.
Aktivera och anpassa förbehandling
Detta avsnitt beskriver förbehandlingsrelaterade alternativ. Se även avsnittet om förbehandling och villkorlig kompilering i den fullständiga dokumentationen för mer detaljerad information om förbehandling i gfortran.
-cpp -nocpp Aktivera förbehandling. Förbehandlaren anropas automatiskt om filändelsen är:
.fpp .FPP .F .FOR .FTN .F90 .F95 .F03 .F08
Använd detta alternativ för att manuellt aktivera förbehandling av valfri Fortran-fil.
För att inaktivera förbehandling av filer med någon av ovanstående filändelser används den negativa formen:
-nocpp
Förbehandlaren körs i traditionellt läge. Begränsningar i filformatet, särskilt radlängdsgränser, gäller även för förbehandlad utdata. Därför kan det vara lämpligt att använda -ffree-line-length-none eller -ffixed-line-length-none.
-dM Generera, i stället för normal utdata, en lista över "#define"-direktiv för alla makron som definieras under körningen av förbehandlaren, inklusive fördefinierade makron. Detta gör det möjligt att se vad som är fördefinierat i den aktuella förbehandlarversionen.
Exempel:
touch foo.f90; gfortran -cpp -E -dM foo.f90
Detta visar alla fördefinierade makron.
-dD Som -dM, men med två skillnader: fördefinierade makron inkluderas inte, och både "#define"-direktiv och resultatet av förbehandlingen skrivs ut. Båda typerna av utdata går till standardutdata.
-dN Som -dD, men skriv endast ut makronamn, inte deras expansioner.
-dU Som -dD, men endast makron som expanderas eller vars definieringsstatus testas i förbehandlingsdirektiv skrivs ut. Utdata skjuts upp tills makrot används eller testas. "#undef"-direktiv skrivs också ut för makron som testas men är odefinierade vid tidpunkten.
-dI Skriv ut "#include"-direktiv utöver resultatet av förbehandlingen.
-fworking-directory Aktivera generering av radmarkörer i förbehandlarens utdata som låter kompilatorn känna till aktuell arbetskatalog vid förbehandlingstidpunkten. När detta är aktiverat skriver förbehandlaren ut en andra radmarkör efter den inledande radmarkören, med aktuell arbetskatalog följd av två snedstreck.
GCC använder denna katalog, när den finns i den förbehandlade indatafilen, som aktuell arbetskatalog i vissa format för felsökningsinformation. Alternativet aktiveras implicit om felsökningsinformation är aktiverad, men kan hindras med -fno-working-directory.
Om flaggan -P finns på kommandoraden har detta alternativ ingen effekt eftersom inga "#line"-direktiv skrivs ut.
-idirafter katalog Sök efter include-filer i katalog, men först efter att alla kataloger som angetts med -I och standardsystemkatalogerna har genomsökts. Katalogen behandlas som en system-include-katalog. Om katalogen börjar med "=" ersätts "=" med sysroot-prefixet. Se --sysroot och -isysroot.
-imultilib katalog Använd katalog som underkatalog till katalogen som innehåller målspecifika C++-huvuden.
-iprefix prefix Ange prefix som prefix för efterföljande -iwithprefix-alternativ. Om prefixet representerar en katalog bör det avslutas med "/".
-isysroot katalog Detta alternativ liknar --sysroot men gäller endast headerfiler.
-iquote katalog Sök i katalog endast efter headerfiler som begärs med:
#include "fil"
De söks inte för:
#include <fil>
Sökningen sker före kataloger angivna med -I och före standardsystemkatalogerna. Om katalogen börjar med "=" ersätts "=" med sysroot-prefixet.
-isystem katalog Sök i katalog efter headerfiler efter alla kataloger som angetts med -I, men före standardsystemkatalogerna. Katalogen markeras som systemkatalog och får samma särskilda behandling som standardsystemkatalogerna.
-nostdinc Sök inte i standardsystemkatalogerna efter headerfiler. Endast kataloger angivna med -I används, samt aktuell fils katalog om det är relevant.
-undef Fördefiniera inga systemspecifika eller GCC-specifika makron. Standardmakrona förblir definierade.
-A predikat = svar Gör ett påstående med predikatet predikat och svaret svar. Denna form föredras framför den äldre formen "-A predikat(svar)", som fortfarande stöds, eftersom den inte använder skalets specialtecken.
-A- predikat = svar Avbryt ett påstående med predikatet predikat och svaret svar.
-C Kasta inte bort kommentarer. Alla kommentarer förs vidare till utdatafilen, utom kommentarer i bearbetade direktiv, som tas bort tillsammans med direktivet.
Man bör vara beredd på bieffekter när -C används. Det gör att förbehandlaren behandlar kommentarer som egna token. Kommentarer i början av en rad som annars skulle vara ett direktiv kan därför göra raden till en vanlig källrad, eftersom första token på raden inte längre är "#".
Varning: detta hanterar för närvarande endast C-liknande kommentarer. Förbehandlaren känner ännu inte igen Fortran-liknande kommentarer.
-CC Kasta inte bort kommentarer, inklusive under makroexpansion. Detta liknar -C, men kommentarer inuti makron förs också vidare till utdatafilen där makrot expanderas.
Utöver bieffekterna hos -C gör -CC att alla C++-liknande kommentarer inuti ett makro konverteras till C-liknande kommentarer. Detta förhindrar att senare användning av makrot av misstag kommenterar bort resten av källraden. -CC används ofta för att stödja lint-kommentarer.
Varning: detta hanterar för närvarande endast C- och C++-liknande kommentarer. Förbehandlaren känner ännu inte igen Fortran-liknande kommentarer.
-D namn Fördefiniera namn som ett makro med definitionen 1.
-D namn = definition Innehållet i definition tokeniseras och bearbetas som om det förekom under översättningsfas tre i ett "#define"-direktiv. Definitionen trunkeras vid inbäddade radbrytningar.
Om förbehandlaren anropas från ett skal eller ett skal-liknande program kan skalets citeringssyntax behövas för att skydda tecken som mellanslag. Om ett funktionsliknande makro ska definieras på kommandoraden skrivs argumentlistan med parenteser före likhetstecknet. Parenteser är specialtecken i de flesta skal, så alternativet behöver ofta citeras.
Med sh och csh fungerar exempelvis:
-D'name(args...)=definition'
Alternativen -D och -U bearbetas i den ordning de ges på kommandoraden. Alla "-imacros file"- och "-include file"-alternativ bearbetas efter alla -D- och -U-alternativ.
-H Skriv ut namnet på varje headerfil som används, utöver övrig normal aktivitet. Varje namn indenteras för att visa hur djupt i "#include"-stacken det ligger.
-P Hindra generering av radmarkörer i förbehandlarens utdata. Detta kan vara användbart när förbehandlaren körs på något som inte är C-kod och som ska skickas till ett program som kan förväxlas av radmarkörerna.
-U namn Ta bort tidigare definition av namn, antingen inbyggd eller given med ett -D-alternativ.
Alternativ för att begära eller undertrycka fel och varningar
Fel är diagnostiska meddelanden som anger att GNU Fortran-kompilatorn inte kan kompilera den aktuella delen av källkoden. Kompilatorn fortsätter att bearbeta programmet för att försöka rapportera fler fel som hjälp vid felsökning, men den producerar ingen kompilerad utdata.
Varningar är diagnostiska meddelanden som anger konstruktioner som inte nödvändigtvis är felaktiga men som är riskabla eller antyder att det sannolikt finns ett fel i programmet. Om inte -Werror anges hindrar varningar inte kompileringen.
Många specifika varningar kan begäras med alternativ som börjar med -W, exempelvis -Wimplicit för varningar om implicita deklarationer. Varje sådant varningsalternativ har också en negativ form som börjar med -Wno-, exempelvis -Wno-implicit. Denna manual listar endast en av formerna, den som inte är standard.
-fmax-errors= n Begränsar maximalt antal felmeddelanden till n. När gränsen nås avbryter GNU Fortran i stället för att försöka fortsätta bearbeta källkoden. Om n är 0 finns ingen gräns för antalet felmeddelanden.
-fsyntax-only Kontrollera koden för syntaxfel, men kompilera den inte. Detta genererar modulfiler för varje modul som finns i koden, men ingen annan utdatafil.
-Wpedantic -pedantic Ge varningar för användning av Fortran-utökningar. -pedantic gäller även C-språkkonstruktioner där de förekommer i GNU Fortran-källfiler, exempelvis användning av \e i en teckenkonstant inom ett direktiv som "#include".
Giltiga Fortran-program bör kompilera korrekt både med och utan detta alternativ. Utan alternativet stöds dock vissa GNU-utökningar och traditionella Fortran-funktioner. Med alternativet avvisas många av dem.
Vissa användare försöker använda -pedantic för att kontrollera standardefterlevnad. Det hittar vissa icke-standardiserade konstruktioner, men inte alla. Alternativet bör användas tillsammans med -std=f95, -std=f2003, -std=f2008 eller -std=f2018.
-pedantic-errors Som -pedantic, men fel genereras i stället för varningar.
-Wall Aktiverar vanligt använda varningsalternativ för användning som rekommenderas att undvika och som anses enkla att undvika. Detta inkluderar för närvarande:
-Waliasing -Wampersand -Wconversion -Wsurprising -Wc-binding-type -Wintrinsics-std -Wtabs -Wintrinsic-shadow -Wline-truncation -Wtarget-lifetime -Winteger-division -Wreal-q-constant -Wunused -Wundefined-do-loop
-Waliasing Varna för möjlig aliasing av dummyargument. Särskilt varnas om samma faktiska argument associeras med ett dummyargument med "INTENT(IN)" och ett dummyargument med "INTENT(OUT)" i ett anrop med uttryckligt gränssnitt.
Exempel som utlöser varningen:
interface
subroutine bar(a,b)
integer, intent(in) :: a
integer, intent(out) :: b
end subroutine
end interface
integer :: a
call bar(a,a)
-Wampersand Varna för saknat et-tecken i fortsatta teckenkonstanter. Varningen ges med -Wampersand, -pedantic, -std=f95, -std=f2003, -std=f2008 och -std=f2018.
Om inget et-tecken anges i en fortsatt teckenkonstant antar GNU Fortran att fortsättningen börjar vid det första tecken som varken är kommentar eller blanktecken efter et-tecknet som inledde fortsättningen.
-Wargument-mismatch Varna för typ-, rang- och andra felmatchningar mellan formella parametrar och faktiska argument till funktioner och subrutiner. Dessa varningar rekommenderas och är därför aktiverade som standard.
-Warray-temporaries Varna för temporära arrayer som genereras av kompilatorn. Informationen kan vara användbar vid optimering för att undvika sådana temporärer.
-Wc-binding-type Varna om en variabel kanske inte är C-interoperabel. Särskilt varnas om variabeln deklarerats med en intrinsisk typ med standard-kind i stället för en kind-parameter definierad för C-interoperabilitet i den intrinsiska modulen "ISO_C_Binding". Detta alternativ impliceras av -Wall.
-Wcharacter-truncation Varna när en teckentilldelning kommer att trunkera den tilldelade strängen.
-Wline-truncation Varna när en källkodsrad kommer att trunkeras. Alternativet impliceras av -Wall. För friform-källkod är standard -Werror=line-truncation, vilket innebär att trunkeringar rapporteras som fel.
-Wconversion Varna för implicita konverteringar som sannolikt ändrar uttryckets värde efter konvertering. Impliceras av -Wall.
-Wconversion-extra Varna för implicita konverteringar mellan olika typer och kind-värden. Detta alternativ implicerar inte -Wconversion.
-Wextra Aktiverar vissa varningsalternativ för användning av språkfunktioner som kan vara problematiska. Detta inkluderar för närvarande -Wcompare-reals, -Wunused-parameter och -Wdo-subscript.
-Wfrontend-loop-interchange Aktivera varning för loopomkastningar som utförs av alternativet -ffrontend-loop-interchange.
-Wimplicit-interface Varna om en procedur anropas utan uttryckligt gränssnitt. Observera att detta endast kontrollerar att ett uttryckligt gränssnitt finns. Det kontrollerar inte att deklarerade gränssnitt är konsekventa mellan programenheter.
-Wimplicit-procedure Varna om en procedur anropas som varken har uttryckligt gränssnitt eller deklarerats som "EXTERNAL".
-Winteger-division Varna om en konstant heltalsdivision trunkerar sitt resultat. Exempelvis utvärderas 3/5 till 0.
-Wintrinsics-std Varna om gfortran hittar en procedur med samma namn som en intrinsisk procedur som inte finns i vald standard, med -std, och därför behandlar den som "EXTERNAL". -fall-intrinsics kan användas för att aldrig utlösa detta beteende och alltid länka till den intrinsiska proceduren oavsett vald standard.
-Wreal-q-constant Ge varning om en real-literal-konstant innehåller exponentbokstaven "q".
-Wsurprising Ge varning när misstänkta kodkonstruktioner påträffas. Även om dessa tekniskt sett är giltiga tyder de ofta på att ett fel har begåtts.
Detta ger för närvarande varning i följande situationer:
- En INTEGER SELECT-konstruktion har ett CASE som aldrig kan matchas eftersom dess nedre värde är större än dess övre värde.
- En LOGICAL SELECT-konstruktion har tre CASE-satser.
- En TRANSFER anger en källa som är kortare än destinationen.
- Typen för ett funktionsresultat deklareras mer än en gång med samma typ. Om -pedantic eller standardkonformt läge är aktiverat är detta ett fel.
- En "CHARACTER"-variabel deklareras med negativ längd.
-Wtabs Som standard accepteras tabbar som blanktecken, men tabbar ingår inte i Fortrans teckenuppsättning. För fortsättningsrader stöds en tabb följd av en siffra mellan 1 och 9. -Wtabs gör att en varning ges om en tabb påträffas. Observera att -Wtabs är aktivt för -pedantic, -std=f95, -std=f2003, -std=f2008, -std=f2018 och -Wall.
-Wundefined-do-loop Varna om en DO-loop med steg 1 eller -1 ger underflöde eller överflöde under iteration av loopens induktionsvariabel. Detta alternativ impliceras av -Wall.
-Wunderflow Ge varning när numeriska konstanta uttryck som ger UNDERFLOW påträffas under kompilering. Aktiverad som standard.
-Wintrinsic-shadow Varna om en användardefinierad procedur eller modulprocedur har samma namn som en intrinsisk procedur. I sådana fall kan ett uttryckligt gränssnitt eller en "EXTERNAL"- eller "INTRINSIC"-deklaration behövas för att senare anrop ska bindas till önskad intrinsisk procedur eller användarprocedur. Detta alternativ impliceras av -Wall.
-Wuse-without-only Varna om en "USE"-sats saknar "ONLY"-kvalificerare och därmed implicit importerar alla publika entiteter från den använda modulen.
-Wunused-dummy-argument Varna för oanvända dummyargument. Detta alternativ impliceras av -Wall.
-Wunused-parameter Till skillnad från betydelsen i gcc varnar gfortran med detta alternativ inte för oanvända dummyargument, se -Wunused-dummy-argument, utan för oanvända "PARAMETER"-värden. -Wunused-parameter impliceras av -Wextra om även -Wunused eller -Wall används.
-Walign-commons Som standard varnar gfortran när variabler fylls ut för korrekt justering i ett "COMMON"-block. Denna varning kan stängas av med -Wno-align-commons. Se även -falign-commons.
-Wfunction-elimination Varna om anrop till orena funktioner elimineras av optimeringar aktiverade av -ffrontend-optimize. Detta alternativ impliceras av -Wextra.
-Wrealloc-lhs Varna när kompilatorn kan infoga kod för allokering eller omallokering av en allokerbar arrayvariabel av intrinsisk typ i intrinsiska tilldelningar. I heta loopar kan Fortran 2003:s omallokeringsfunktion försämra prestandan. Om arrayen redan är allokerad med rätt form bör man överväga att använda en hel-array-array-specifikation, exempelvis "(:,:,:)", för variabeln på vänstersidan för att undvika omallokeringskontrollen. I vissa fall visas varningen även om kompilatorn optimerar bort omallokeringskontroller. Se även -frealloc-lhs.
-Wrealloc-lhs-all Varna när kompilatorn infogar kod för allokering eller omallokering av en allokerbar variabel. Detta inkluderar skalärer och härledda typer.
-Wcompare-reals Varna vid jämförelse av reala eller komplexa typer för likhet eller olikhet. Detta alternativ impliceras av -Wextra.
-Wtarget-lifetime Varna om pekaren i en pekartilldelning kan leva längre än sitt mål. Detta alternativ impliceras av -Wall.
-Wzerotrip Varna om en "DO"-loop är känd vid kompileringstid att köras noll gånger. Detta alternativ impliceras av -Wall.
-Wdo-subscript Varna om ett arrayindex i en DO-loop kan leda till åtkomst utanför gränserna även om kompilatorn inte kan bevisa att satsen faktiskt körs, exempelvis:
real a(3)
do i=1,4
if (condition(i)) then
a(i) = 1.2
end if
end do
Detta alternativ impliceras av -Wextra.
-Werror Gör alla varningar till fel.
Vissa av dessa alternativ har ingen effekt när program skrivna i Fortran kompileras.
Alternativ för felsökning av programmet eller GNU Fortran
GNU Fortran har flera särskilda alternativ som används för felsökning av antingen ditt program eller GNU Fortran-kompilatorn.
-fdump-fortran-original Skriv ut det interna parseträdet efter att källprogrammet har översatts till intern representation. Detta är främst användbart för felsökning av GNU Fortran-kompilatorn. Utdata som genereras av alternativet kan ändras mellan versioner. Alternativet kan också generera interna kompilatorfel för funktioner som nyligen lagts till.
-fdump-fortran-optimized Skriv ut parseträdet efter front-end-optimering. Detta är främst användbart för felsökning av GNU Fortran-kompilatorn. Utdata kan ändras mellan versioner. Alternativet kan också generera interna kompilatorfel för nyligen tillagda funktioner.
-fdump-parse-tree Skriv ut det interna parseträdet efter att källprogrammet har översatts till intern representation. Detta är främst användbart för felsökning av GNU Fortran-kompilatorn. Utdata kan ändras mellan versioner. Alternativet kan också generera interna kompilatorfel för nyligen tillagda funktioner. Alternativet är föråldrat; använd -fdump-fortran-original i stället.
-fdump-fortran-global Skriv ut en lista över globala identifierare efter översättning till middle-end-representation. Detta är främst användbart för felsökning av GNU Fortran-kompilatorn. Utdata kan ändras mellan versioner. Alternativet kan också generera interna kompilatorfel för nyligen tillagda funktioner.
-ffpe-trap= lista Ange en lista över flyttalsundantag som ska aktiveras som fällor. På de flesta system skickas en SIGFPE-signal om ett flyttalsundantag inträffar och fällan för detta undantag är aktiverad. Programmet avbryts och kan skapa en core-fil som är användbar för felsökning.
lista är en, eventuellt tom, kommaseparerad lista över följande undantag:
invalid zero overflow underflow inexact denormal
invalid betyder ogiltig flyttalsoperation, exempelvis "SQRT(-1.0)". zero betyder division med noll. overflow betyder överflöde i en flyttalsoperation. underflow betyder underflöde. inexact betyder precisionsförlust under operation. denormal betyder operation på ett denormalt värde.
De fem första undantagen motsvarar IEEE 754-undantagen. Det sista, denormal, ingår inte i IEEE 754-standarden men finns på vissa vanliga arkitekturer, exempelvis x86.
De tre första undantagen, invalid, zero och overflow, indikerar ofta allvarliga fel. Om programmet inte har särskild hantering för dessa undantag är det ofta en god idé att aktivera fällor för dem.
Om alternativet används mer än en gång på kommandoraden slås listorna ihop. Exempelvis är:
-ffpe-trap=lista1 -ffpe-trap=lista2
likvärdigt med:
-ffpe-trap=lista1,lista2
Observera att när ett undantag väl har aktiverats kan det inte inaktiveras med någon negativ form.
Många, om inte de flesta, flyttalsoperationer orsakar precisionsförlust på grund av avrundning. Därför är -ffpe-trap=inexact ofta ointressant i praktiken.
Som standard är inga undantagsfällor aktiverade.
-ffpe-summary= lista Ange en lista över flyttalsundantag vars flaggstatus skrivs ut till "ERROR_UNIT" när "STOP" och "ERROR STOP" anropas.
lista kan vara:
none all invalid zero overflow underflow inexact denormal
Se -ffpe-trap för beskrivning av undantagen.
Om alternativet används mer än en gång på kommandoraden används endast det sista. Som standard visas en sammanfattning för alla undantag utom inexact.
-fno-backtrace När ett allvarligt körtidsfel påträffas eller en dödlig signal skickas, exempelvis segmenteringsfel, illegal instruktion, bus error, flyttalsundantag och andra POSIX-signaler med åtgärden core, försöker Fortrans körtidsbibliotek skriva ut en backtrace. -fno-backtrace inaktiverar generering av backtrace. Alternativet påverkar endast kompilering av Fortran-huvudprogrammet.
Alternativ för katalogsökning
Dessa alternativ påverkar hur GNU Fortran söker efter filer som anges av "INCLUDE"-direktivet och var det söker efter tidigare kompilerade moduler.
De påverkar också sökvägar som används av cpp när den används för att förbehandla Fortran-källkod.
-I katalog Påverkar tolkningen av "INCLUDE"-direktivet samt "#include"-direktivet i cpp-förbehandlaren.
Det allmänna beteendet hos -I och "INCLUDE" är i stort sett detsamma som -I tillsammans med "#include" i cpp-förbehandlaren, exempelvis när header.gcc och liknande filer söks.
Sökvägen används också för att söka efter .mod-filer när tidigare kompilerade moduler krävs av en "USE"-sats.
-J katalog Anger var .mod-filer för kompilerade moduler ska placeras. Katalogen läggs också till i listan över kataloger som genomsöks av en "USE"-sats.
Standard är aktuell katalog.
-fintrinsic-modules-path katalog Anger platsen för förkompilerade intrinsiska moduler, om de inte finns på den standardplats som kompilatorn förväntar sig.
Påverka länksteget
Dessa alternativ används när kompilatorn länkar objektfiler till en körbar utdatafil. De saknar betydelse om kompilatorn inte utför ett länksteg.
-static-libgfortran På system som tillhandahåller libgfortran både som delat och statiskt bibliotek tvingar detta alternativ användning av den statiska versionen. Om ingen delad version av libgfortran byggdes när kompilatorn konfigurerades har alternativet ingen effekt.
Påverka körtidsbeteende
Dessa alternativ påverkar körtidsbeteendet hos program som kompilerats med GNU Fortran.
-fconvert= konvertering Ange representationen av data för oformaterade filer. Giltiga värden för konvertering är:
native swap big-endian little-endian
native är standard. swap byter mellan big-endian och little-endian. big-endian använder big-endian-representation för oformaterade filer. little-endian använder little-endian-representation.
Detta alternativ har endast effekt när det används i huvudprogrammet. "CONVERT"-specifieraren och miljövariabeln GFORTRAN_CONVERT_UNIT åsidosätter standardvärdet som anges av -fconvert.
-frecord-marker= längd Ange längden på postmarkörer för oformaterade filer. Giltiga värden är 4 och 8. Standard är 4.
Detta skiljer sig från tidigare versioner av gfortran, som angav standardlängden 8 på de flesta system. Om filer ska läsas eller skrivas kompatibelt med tidigare versioner av gfortran används:
-frecord-marker=8
-fmax-subrecord-length= längd Ange maximal längd för en delpost. Det största tillåtna värdet för längd är 2147483639, vilket också är standard. Detta är egentligen endast användbart för gfortrans testsvit.
-fsign-zero När detta är aktiverat skrivs flyttal med värdet noll och satt teckenbit ut som negativa tal i formaterad utdata och behandlas som negativa i den intrinsiska funktionen "SIGN".
-fno-sign-zero skriver inte ut minustecken för nollvärden, eller värden som avrundats till noll vid I/O, och betraktar noll som positivt tal i "SIGN", för kompatibilitet med Fortran 77. Standard är -fsign-zero.
Alternativ för kodgenereringskonventioner
Dessa maskinoberoende alternativ styr gränssnittskonventioner som används vid kodgenerering.
De flesta har både positiv och negativ form. Den negativa formen av -ffoo är -fno-foo. I tabellen listas endast den form som inte är standard. Den andra formen kan vanligtvis fås genom att ta bort eller lägga till no-.
-fno-automatic Behandla varje programenhet, utom sådana markerade som RECURSIVE, som om "SAVE"-satsen angavs för varje lokal variabel och array som refereras i den. Detta påverkar inte common-block. Vissa Fortran-kompilatorer erbjuder detta alternativ under namnet -static eller -save.
Standard, -fautomatic, använder stacken för lokala variabler som är mindre än värdet som ges av -fmax-stack-var-size. Använd -frecursive för att inte använda statiskt minne.
Lokala variabler eller arrayer som har uttryckligt "SAVE"-attribut ignoreras tyst om inte -pedantic anges.
-ff2c Generera kod som är avsedd att vara kompatibel med kod genererad av g77 och f2c.
Anropskonventionerna som används av g77, ursprungligen implementerade i f2c, kräver att funktioner som returnerar standardtypen "REAL" i själva verket returnerar C-typen "double", och att funktioner som returnerar "COMPLEX" returnerar värdena via ett extra argument i anropssekvensen som pekar på var returvärdet ska lagras.
Med GNU:s standardkonventioner returnerar sådana funktioner helt enkelt sina resultat som de skulle i GNU C: standard-"REAL"-funktioner returnerar C-typen "float", och "COMPLEX"-funktioner returnerar GNU C-typen "complex".
Dessutom implicerar detta alternativ -fsecond-underscore, om inte -fno-second-underscore uttryckligen begärs. Detta påverkar inte kodgenerering som samverkar med biblioteket libgfortran.
Varning: det är inte lämpligt att blanda Fortran-kod kompilerad med -ff2c med kod kompilerad med standardkonventionerna -fno-f2c. Anrop av "COMPLEX"- eller standard-"REAL"-funktioner mellan programdelar kompilerade med olika anropskonventioner kan sluta fungera vid körning.
Varning: detta bryter kod som skickar intrinsiska funktioner av typen standard-"REAL" eller "COMPLEX" som faktiska argument, eftersom biblioteksimplementationerna använder -fno-f2c-konventionerna.
-fno-underscoring Transformera inte namn på entiteter i Fortran-källfilen genom att lägga till understreck.
Med -funderscoring aktivt lägger GNU Fortran till ett understreck till externa namn utan understreck. Detta görs för kompatibilitet med kod producerad av många UNIX-Fortran-kompilatorer.
Varning: GNU Fortrans standardbeteende är inkompatibelt med f2c och g77. Använd -ff2c om objektfiler kompilerade med GNU Fortran ska vara kompatibla med objektkod skapad med dessa verktyg.
Användning av -fno-underscoring rekommenderas inte annat än vid experiment med integration av GNU Fortran i befintliga systemmiljöer, exempelvis mot befintliga bibliotek och verktyg.
Exempel: med -funderscoring, och om "j()" och "max_count()" är externa funktioner medan "my_var" och "lvar" är lokala variabler, implementeras en sats som:
I = J() + MAX_COUNT (MY_VAR, LVAR)
ungefär som:
i = j_() + max_count__(&my_var__, &lvar);
Med -fno-underscoring implementeras samma sats som:
i = j() + max_count(&my_var, &lvar);
Användning av -fno-underscoring gör det möjligt att använda användardefinierade namn direkt vid felsökning och vid gränssnitt mellan GNU Fortran-kod och andra språk.
Observera att matchande namn inte betyder att gränssnittet som GNU Fortran implementerar för ett externt namn matchar gränssnittet som ett annat språk implementerar för samma namn. Namnmatchning är bara en liten del av problemet. Andra gränssnittsskillnader kan kräva betydande arbete och upptäcks normalt inte av länkaren.
Med -fno-underscoring finns också en verklig risk att användardefinierade externa namn kolliderar med namn i systembibliotek, vilket kan göra länk- och körtidsfel svåra att hitta.
-fsecond-underscore Som standard lägger GNU Fortran till ett understreck till externa namn. Med detta alternativ lägger GNU Fortran till två understreck till namn som innehåller understreck och ett understreck till externa namn utan understreck. GNU Fortran lägger också till två understreck till interna namn med understreck för att undvika namnkonflikter med externa namn.
Alternativet har ingen effekt om -fno-underscoring används. Det impliceras av -ff2c.
Med detta alternativ implementeras ett externt namn som "MAX_COUNT" som en referens till länksymbolen "max_count__" i stället för "max_count_". Detta krävs för kompatibilitet med g77 och f2c.
-fcoarray= nyckelord
none Inaktivera coarray-stöd. Coarray-deklarationer och image-control-satser ger kompileringsfel. Detta är standard.
single Single-image-läge, det vill säga "num_images()" är alltid ett.
lib Biblioteksbaserad coarray-parallellisering. Ett lämpligt GNU Fortran coarray-bibliotek behöver länkas.
-fcheck= nyckelord Aktivera generering av körtidskontroller. Argumentet ska vara en kommaseparerad lista över följande nyckelord. Om ett nyckelord föregås av no- inaktiveras det om det aktiverats tidigare.
all Aktivera alla körtidstester i -fcheck.
array-temps Varna vid körning när en temporär array måste genereras för att skicka ett faktiskt argument. Informationen kan vara användbar vid optimering för att undvika sådana temporärer. Varningen skrivs endast ut en gång per plats.
bounds Aktivera körtidskontroller för arrayindex och mot deklarerade minsta och största värden. Det kontrollerar även arrayindex för assumed shape- och deferred shape-arrayer mot faktiska allokerade gränser och säkerställer att alla stränglängder är lika för character-array-konstruktorer utan uttrycklig typespec.
Vissa kontroller kräver att -fcheck=bounds används vid kompilering av huvudprogrammet. I framtiden kan detta även omfatta andra former av kontroller, exempelvis substring-referenser.
do Aktivera körtidskontroller för otillåten ändring av loopens iterationsvariabler.
mem Aktivera körtidskontroller för minnesallokering. Detta påverkar inte uttryckliga allokeringar med "ALLOCATE", som alltid kontrolleras.
pointer Aktivera körtidskontroller för pekare och allokerbara objekt.
recursion Aktivera körtidskontroller för rekursivt anropade subrutiner och funktioner som inte är markerade som rekursiva. Se även -frecursive. Kontrollen fungerar inte för OpenMP-program och inaktiveras om den används tillsammans med -frecursive och -fopenmp.
Exempel:
gfortran -fcheck=all,no-array-temps foo.f90
Detta kompilerar filen med alla kontroller aktiverade utom varningar för genererade arraytemporärer.
-fbounds-check Föråldrat alias för -fcheck=bounds.
-ftail-call-workaround -ftail-call-workaround= n Vissa C-gränssnitt till Fortran-kod bryter mot gfortrans ABI genom att utelämna dolda teckenlängdsargument. Detta kan leda till krascher eftersom argument för tail calls kan fylla stacken.
För att ge en lösning för befintliga binärpaket inaktiverar detta alternativ tail call-optimering för gfortran-procedurer med teckenargument. Med -ftail-call-workaround=2 inaktiveras tail call-optimering i alla gfortran-procedurer med teckenargument. Med -ftail-call-workaround=1 eller -ftail-call-workaround inaktiveras det endast i gfortran-procedurer med teckenargument som anropar implicit prototypade procedurer.
Användning av detta alternativ kan leda till problem, inklusive krascher på grund av otillräckligt stackutrymme. Det rekommenderas mycket starkt att rätta koden. Alternativet -fc-prototypes-external kan användas för att generera prototyper som följer gfortrans ABI.
Stöd för detta alternativ kommer troligen att tas bort i en framtida version av gfortran.
Den negativa formen -fno-tail-call-workaround eller -ftail-call-workaround=0 kan användas för att inaktivera alternativet. Standard är för närvarande -ftail-call-workaround, men detta kommer att ändras i framtida versioner.
-fcheck-array-temporaries Föråldrat alias för -fcheck=array-temps.
-fmax-array-constructor= n Kan användas för att öka den övre gränsen för arraykonstruktorer. Följande kod kräver detta alternativ för att expandera arrayen vid kompileringstid:
program test implicit none integer j integer, parameter :: n = 100000 integer, parameter :: i(n) = (/ (2*j, j = 1, n) /) print '(10(I0,1X))', i end program test
Varning: detta alternativ kan leda till långa kompileringstider och mycket stora objektfiler.
Standardvärdet för n är 65535.
-fmax-stack-var-size= n Anger storleken i byte för den största array som placeras på stacken. Om storleken överskrids används statiskt minne, utom i procedurer markerade som RECURSIVE. Använd -frecursive för att tillåta rekursiva procedurer utan RECURSIVE-attribut eller för parallella program. Använd -fno-automatic för att aldrig använda stacken.
Alternativet påverkar för närvarande endast lokala arrayer deklarerade med konstanta gränser och gäller kanske inte alla character-variabler. Framtida versioner av GNU Fortran kan förbättra detta beteende.
Standardvärdet för n är 32768.
-fstack-arrays Gör att Fortran-kompilatorn placerar alla arrayer med okänd storlek och arraytemporärer på stacken. Om programmet använder mycket stora lokala arrayer kan stackgränserna behöva utökas i operativsystemet.
Flaggan aktiveras som standard vid optimeringsnivån -Ofast, om inte -fmax-stack-var-size anges.
-fpack-derived Gör att GNU Fortran packar medlemmar i härledda typer så tätt som möjligt. Kod kompilerad med detta alternativ är sannolikt inkompatibel med kod kompilerad utan alternativet och kan köras långsammare.
-frepack-arrays I vissa fall kan GNU Fortran skicka assumed shape-arraydelar via en deskriptor som beskriver ett icke-sammanhängande minnesområde. Detta alternativ lägger till kod i funktionsprologen för att packa om data till ett sammanhängande block vid körning.
Detta bör ge snabbare åtkomst till arrayen men kan skapa betydande overhead vid funktionsanrop, särskilt när data som skickas inte är sammanhängande.
-fshort-enums Detta alternativ tillhandahålls för interoperabilitet med C-kod kompilerad med -fshort-enums. GNU Fortran väljer då minsta "INTEGER"-kind som en given enumeratoruppsättning får plats i och ger alla enumeratorer denna kind.
-fexternal-blas Gör att gfortran genererar anrop till BLAS-funktioner för vissa matrisoperationer som "MATMUL" i stället för att använda interna algoritmer, om storleken på de inblandade matriserna är större än en given gräns, se -fblas-matmul-limit. Detta kan vara lönsamt om ett optimerat leverantörs-BLAS-bibliotek finns tillgängligt. BLAS-biblioteket måste anges vid länkning.
-fblas-matmul-limit= n Har endast betydelse när -fexternal-blas är aktivt. Matrismultiplikation av matriser med storlek större än eller lika med n utförs genom anrop till BLAS-funktioner, medan övriga hanteras av interna gfortran-algoritmer.
Om matriserna inte är kvadratiska görs storleksjämförelsen med det geometriska medelvärdet av dimensionerna hos argument- och resultatmatriserna.
Standardvärdet för n är 30.
-finline-matmul-limit= n När front-end-optimering är aktiv infogas vissa anrop till den intrinsiska funktionen "MATMUL". Detta kan öka kodstorleken om matrisstorleken inte kan bestämmas vid kompileringstid, eftersom kod för båda fallen genereras.
-finline-matmul-limit=0 inaktiverar infogning i alla fall. Ett värde n producerar infogad kod för matriser med storlek upp till n. Om matriserna inte är kvadratiska görs jämförelsen med det geometriska medelvärdet av dimensionerna hos argument- och resultatmatriserna.
Standardvärdet är 30. -fblas-matmul-limit kan användas för att ändra detta värde.
-frecursive Tillåt indirekt rekursion genom att tvinga alla lokala arrayer att allokeras på stacken. Flaggan kan inte användas tillsammans med -fmax-stack-var-size= eller -fno-automatic.
-finit-local-zero -finit-derived -finit-integer= n -finit-real=<zero|inf|-inf|nan|snan> -finit-logical=<true|false> -finit-character= n Alternativet -finit-local-zero instruerar kompilatorn att initiera lokala "INTEGER"-, "REAL"- och "COMPLEX"-variabler till noll, "LOGICAL"-variabler till false och "CHARACTER"-variabler till en sträng av null-byte.
Mer detaljerade initieringsalternativ ges av -finit-integer= n, -finit-real=<zero|inf|-inf|nan|snan>, som också initierar real- och imaginärdelar av lokala "COMPLEX"-variabler, -finit-logical=<true|false> och -finit-character= n, där n är ett ASCII-teckenvärde.
Med -finit-derived initieras komponenter i variabler av härledd typ enligt dessa flaggor. Komponenter vars typ inte täcks av en uttrycklig -finit-*-flagga behandlas som med -finit-local-zero.
Dessa alternativ initierar inte:
- objekt med POINTER-attribut
- allokerbara arrayer
- variabler som förekommer i en "EQUIVALENCE"-sats
Dessa begränsningar kan komma att tas bort i framtida versioner.
Observera att -finit-real=nan initierar "REAL"- och "COMPLEX"-variabler med en quiet NaN. För signalling NaN används -finit-real=snan. Kompileringstidsoptimeringar kan dock konvertera dem till quiet NaN, och fällor behöver aktiveras, exempelvis med -ffpe-trap.
-finit-integer tolkar värdet som ett heltal av typen "INTEGER(kind=C_LONG)" på värden. Värdet tilldelas sedan heltalsvariabler i Fortran-koden, vilket kan ge wraparound om värdet är för stort för aktuell kind.
Observera slutligen att aktivering av något av -finit-*-alternativen tystar varningar som annars skulle ha genererats av -Wuninitialized för berörda lokala variabler.
-falign-commons Som standard ser gfortran till att alla variabler i ett "COMMON"-block är korrekt justerade genom utfyllnad vid behov. På vissa plattformar är detta nödvändigt, på andra förbättrar det prestanda.
Om ett "COMMON"-block inte deklareras med konsekventa datatyper överallt kan utfyllnaden orsaka problem, och -fno-align-commons kan användas för att inaktivera automatisk justering. Samma form av alternativet bör användas för alla filer som delar ett "COMMON"-block. För att undvika justeringsproblem rekommenderas att objekt i "COMMON"-block ordnas från störst till minst.
-fno-protect-parens Som standard respekteras parenteser i uttryck vid alla optimeringsnivåer så att kompilatorn inte gör omassociation. Med -fno-protect-parens kan kompilatorn ordna om "REAL"- och "COMPLEX"-uttryck för snabbare kod. För omassociation krävs att -fno-signed-zeros och -fno-trapping-math är aktiva. Parenteskydd är aktiverat som standard om inte -Ofast anges.
-frealloc-lhs En allokerbar vänstersida i en intrinsisk tilldelning allokeras eller omallokeras automatiskt om den antingen är oallokerad eller har annan form. Alternativet är aktiverat som standard utom när -std=f95 anges. Se även -Wrealloc-lhs.
-faggressive-function-elimination Funktioner med identiska argumentlistor elimineras inom satser, oavsett om de är markerade som "PURE" eller inte. Exempel:
a = f(b,c) + f(b,c)
Det blir då endast ett anrop till "f". Detta alternativ fungerar endast om -ffrontend-optimize är aktivt.
-ffrontend-optimize Utför front-end-optimering genom att manipulera delar av Fortrans parseträd. Det aktiveras som standard av alla -O-alternativ utom -O0 och -Og.
Optimeringar som aktiveras av detta alternativ inkluderar:
- infogning av anrop till "MATMUL"
- eliminering av identiska funktionsanrop inom uttryck
- borttagning av onödiga anrop till "TRIM" i jämförelser och tilldelningar
- ersättning av TRIM(a) med "a(1:LEN_TRIM(a))"
- kortslutning av logiska operatorer, ".AND." och ".OR."
Det kan avaktiveras med -fno-frontend-optimize.
-ffrontend-loop-interchange Försök byta ordning på loopar i Fortran-frontenden när det är lönsamt. Aktiveras som standard av alla -O-alternativ. För närvarande påverkar detta endast "FORALL" och "DO CONCURRENT"-satser med flera forall-tripletter.
MILJÖ
Kompilatorn gfortran använder för närvarande inga miljövariabler för att styra sin funktion utöver dem som påverkar gcc.
FEL
Instruktioner för att rapportera fel finns på:
SE ÄVEN
gpl(7), gfdl(7), fsf-funding(7), cpp(1), gcov(1), gcc(1), as(1), ld(1), gdb(1), dbx(1)
Se även Info-posterna för gcc, cpp, gfortran, as, ld, binutils och gdb.
FÖRFATTARE
Se Info-posten för gfortran för bidragsgivare till GCC och GNU Fortran.
UPPHOVSRÄTT
Copyright (c) 2004-2019 Free Software Foundation, Inc.
Tillstånd ges att kopiera, distribuera och/eller ändra detta dokument enligt villkoren i GNU Free Documentation License, version 1.3 eller senare version publicerad av Free Software Foundation. De oföränderliga avsnitten är "Funding Free Software"; framsidestexterna är (a), se nedan; och baksidestexterna är (b), se nedan. En kopia av licensen finns i manualsidan gfdl(7).
(a) FSF:s framsidestext är:
A GNU Manual
(b) FSF:s baksidestext är:
You have freedom to copy and modify this GNU Manual, like GNU software. Copies published by the Free Software Foundation raise funds for GNU development.
KOLOFON
Denna sida är en del av projektet gcc, GNU Compiler Collection.
Information om projektet finns på:
Om du har en felrapport för denna manualsida, se:
Denna sida hämtades från tar-arkivet gcc-9.5.0.tar.xz från:
https://ftp.fu-berlin.de/unix/languages/gcc/releases/
Sidan hämtades den 16 januari 2026.
Om du upptäcker renderingsproblem i HTML-versionen av sidan, eller anser att det finns en bättre eller mer uppdaterad källa för sidan, eller har korrigeringar eller förbättringar av informationen i denna KOLOFON, som inte är en del av den ursprungliga manualsidan, skicka e-post till man-pages@man7.org.
gcc-9.5.0 2022-05-27 GFORTRAN(1)
Sidslut
Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/gfortran.1.html
Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till Datorservice som har sponsrat Linux.se med webbhotell.