gfortran(1)

Från Wiki.linux.se -Linux wikipedia på Svenska.
Version från den 15 maj 2026 kl. 07.08 av Admin (diskussion | bidrag) (→‎KOLOFON)
(skillnad) ← Äldre version | Nuvarande version (skillnad) | Nyare version → (skillnad)
Hoppa till navigering Hoppa till sök

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 övriga 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, samt av andra drivrutiner som byggts samtidigt, exempelvis g++. Detta beror på att när GNU Fortran läggs till i GCC-distributionen görs GNU Fortran-alternativ tillgängliga för alla relevanta drivrutiner.

I vissa fall har alternativ både positiva och negativa former. Den negativa formen av -ffoo skulle vara -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 layouten 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 avgörs källformen av filändelsen.

-fall-intrinsics Gör att alla inbyggda procedurer accepteras, inklusive 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 inbyggda procedurer som finns i gfortran.

Som följd ignoreras -Wintrinsics-std, och ingen användardefinierad procedur med samma namn som någon inbyggd 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, såsom 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, till exempel BIAND, IIAND, JIAND med flera.

-fdec-math Aktivera äldre matematiska inbyggda 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 en 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, eftersom olika leverantörer har implementerat 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

Dessa 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åtkomst 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 kolumnen efter vilken tecken ignoreras i typiska fastform-rader i källfilen. Om inte "-fno-pad-source" anges 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 populära kompilatorer.

n kan också vara none, vilket betyder att hela raden är meningsfull och att fortsatta teckenkonstanter aldrig får implicita mellanslag tillagda för att fylla ut raden. -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 något av dessa alternativ får fortsatta teckenkonstanter aldrig implicita mellanslag tillagda för att fylla ut raden.

-ffree-line-length- n Ange kolumnen 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, samt "!$"-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 kan ändras 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, samt "!$"-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.

Exempelvis ger GNU Fortran 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 det relevanta intervallet ["-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 i stället.

-fdefault-integer-8 Sätt standardtyperna integer och logical till en 8 byte bred typ. Detta alternativ 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 också typen hos icke-dubbla realkonstanter som 1.0.

Detta alternativ 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 "fdefault-real-8" 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.

Detta alternativ 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-10" främjas inte "DOUBLE PRECISION" och dubbla realkonstanter.

-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.

Detta alternativ 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-16" främjas inte "DOUBLE PRECISION" och dubbla realkonstanter.

-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 som "1.d0" 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.

Detta 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 den mellanrepresentation av den översatta Fortran-koden som produceras av -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.

-std= std Ange den standard som programmet förväntas följa. Värdet kan vara ett av:

f95
f2003
f2008
f2018
gnu
legacy

Standardvärdet för std är gnu, vilket anger en övermängd av den senaste Fortran-standarden, inklusive alla utökningar som stöds av GNU Fortran. 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 Fortran 95, Fortran 2003, Fortran 2008 respektive Fortran 2018.

Det föråldrade alternativet -std=f2008ts fungerar som alias för -std=f2018. Det finns endast kvar för bakåtkompatibilitet 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

Förbehandlingsrelaterade alternativ.

-cpp -nocpp Aktivera förbehandling. Förbehandlaren anropas automatiskt om filändelsen är någon av:

.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änd den negativa formen:

-nocpp

Förbehandlaren körs i traditionellt läge. Eventuella 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.

Exempel:

touch foo.f90; gfortran -cpp -E -dM foo.f90

Detta visar alla fördefinierade makron.

-dD Som -dM, men med två skillnader: de fördefinierade makrona inkluderas inte, och både "#define"-direktiv och resultatet av förbehandlingen skrivs ut.

-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.

Detta alternativ aktiveras implicit om felsökningsinformation är aktiverad, men kan hindras med den negativa formen -fno-working-directory.

Om flaggan -P finns på kommandoraden har detta alternativ ingen effekt, eftersom inga "#line"-direktiv då skrivs ut.

-idirafter katalog Sök efter include-filer i katalog, men först efter att alla kataloger som angetts med -I och standardkatalogerna har genomsökts. Katalogen behandlas som en system-include-katalog.

-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 fungerar som --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>

-isystem katalog Sök i katalog efter headerfiler efter alla kataloger som angetts med -I, men före standardsystemkatalogerna. Markera katalogen som systemkatalog.

-nostdinc Sök inte i standardsystemkatalogerna efter headerfiler. Endast kataloger som angetts 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.

-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.

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.

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 i ett "#define"-direktiv.

-H Skriv ut namnet på varje headerfil som används. Varje namn dras in för att visa hur djupt i "#include"-stacken det ligger.

-P Hindra generering av radmarkörer i förbehandlarens utdata.

-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 rapporterar att GNU Fortran-kompilatorn inte kan kompilera relevant del av källkoden. Kompilatorn fortsätter att bearbeta programmet för att försöka rapportera fler fel, men producerar ingen kompilerad utdata.

Varningar är diagnostiska meddelanden som rapporterar konstruktioner som inte är fel i sig men som är riskabla eller antyder att det troligen finns ett fel i programmet. Om inte -Werror anges hindrar de inte kompileringen.

-fmax-errors= n Begränsar maximalt antal felmeddelanden till n. Därefter avbryter GNU Fortran i stället för att fortsätta bearbeta källkoden. Om n är 0 finns ingen gräns.

-fsyntax-only Kontrollera koden för syntaxfel, men kompilera den inte. Detta genererar modulfiler för varje modul i koden, men ingen annan utdatafil.

-Wpedantic -pedantic Ge varningar för användning av Fortran-utökningar.

Detta 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 vanliga 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. Detta sker särskilt 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:

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.

-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.

-Wc-binding-type Varna om en variabel kanske inte är interoperabel med C.

-Wcharacter-truncation Varna när en teckentilldelning trunkerar den tilldelade strängen.

-Wline-truncation Varna när en källkodsrad kommer att trunkeras. Detta alternativ 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 varningar för språkkonstruktioner 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.

-Wimplicit-procedure Varna om en procedur anropas som varken har uttryckligt gränssnitt eller har 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 inbyggd procedur som inte finns i vald standard, och därför behandlar den som "EXTERNAL".

-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å fel.

Detta ger för närvarande varning när:

  • 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.
  • En "CHARACTER"-variabel deklareras med negativ längd.

-Wtabs Som standard accepteras tabbar som blanktecken, men tabbar ingår inte i Fortrans teckenuppsättning. -Wtabs ger varning om en tabb påträffas.

-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 impliceras av -Wall.

-Wunderflow Ge varning när numeriska konstanta uttryck påträffas som ger UNDERFLOW under kompilering. Aktiverad som standard.

-Wintrinsic-shadow Varna om en användardefinierad procedur eller modulprocedur har samma namn som en inbyggd procedur.

-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 inte för oanvända dummyargument med detta alternativ, utan för oanvända "PARAMETER"-värden.

-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.

-Wfunction-elimination Varna om anrop till orena funktioner elimineras av optimeringar aktiverade av -ffrontend-optimize. Detta impliceras av -Wextra.

-Wrealloc-lhs Varna när kompilatorn kan infoga kod för allokering eller omallokering av en allokerbar arrayvariabel på vänstersidan i en intrinsisk tilldelning.

-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 impliceras av -Wextra.

-Wtarget-lifetime Varna om pekaren i en pekartilldelning kan leva längre än sitt mål. Detta impliceras av -Wall.

-Wzerotrip Varna om en "DO"-loop är känd vid kompileringstid att köras noll gånger. Detta 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.

Exempel:

real a(3)
do i=1,4
  if (condition(i)) then
    a(i) = 1.2
  end if
end do

-Werror Gör alla varningar till fel.

Vissa av dessa alternativ har ingen effekt vid kompilering av program skrivna i Fortran.

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.

-fdump-fortran-optimized Skriv ut parseträdet efter front-end-optimering. Främst användbart för felsökning av GNU Fortran-kompilatorn.

-fdump-parse-tree Skriv ut det interna parseträdet efter översättning till intern representation. Detta alternativ ä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.

-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 är aktiverad. Programmet avbryts då och kan skapa en core-fil som är användbar för felsökning.

lista är en kommaseparerad lista av följande undantag:

invalid
zero
overflow
underflow
inexact
denormal

De tre första undantagen, invalid, zero och overflow, indikerar ofta allvarliga fel.

Om alternativet används mer än en gång på kommandoraden slås listorna ihop.

Observera att när ett undantag väl har aktiverats kan det inte inaktiveras med någon negativ form.

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

Som standard visas en sammanfattning för alla undantag utom inexact.

-fno-backtrace När ett allvarligt körtidsfel eller en dödlig signal inträffar försöker Fortrans körtidsbibliotek skriva ut en backtrace. -fno-backtrace inaktiverar generering av backtrace.

Detta alternativ 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ägarna 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.

Denna sökväg 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 detta alternativ 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 är:

native
swap
big-endian
little-endian

native är standard. swap växlar mellan big-endian och little-endian. big-endian använder big-endian-representation och little-endian använder little-endian-representation för oformaterade filer.

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 du vill läsa eller skriva filer som är kompatibla med tidigare versioner av gfortran, använd:

-frecord-marker=8

-fmax-subrecord-length= längd Ange maximal längd för en delpost. Det största tillåtna värdet är 2147483639, vilket också är standard. Detta är främst 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 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.

-fno-automatic Behandla varje programenhet, utom sådana markerade som RECURSIVE, som om "SAVE"-satsen angavs för varje lokal variabel och array som används i den. Påverkar inte common-block.

Standard är -fautomatic, vilket använder stacken för lokala variabler som är mindre än värdet som ges av -fmax-stack-var-size.

-ff2c Generera kod som är avsedd att vara kompatibel med kod genererad av g77 och f2c.

Varning: det är ingen god idé att blanda Fortran-kod kompilerad med -ff2c med kod kompilerad med standardkonventionerna -fno-f2c. Anrop mellan programdelar kompilerade med olika anropskonventioner kan gå sönder vid körning.

-fno-underscoring Lägg inte till understreck till namn på entiteter som anges i Fortran-källfilen.

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.

-fsecond-underscore Som standard lägger GNU Fortran till ett understreck till externa namn. Om detta alternativ används lägger GNU Fortran till två understreck till namn som innehåller understreck och ett understreck till externa namn utan understreck.

Detta alternativ har ingen effekt om -fno-underscoring används. Det impliceras av -ff2c.

-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 av följande nyckelord. Ett nyckelord kan föregås av no- för att inaktivera det om det tidigare aktiverats.

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.

bounds Aktivera körtidskontroller för arrayindex och mot deklarerade minsta och största värden. Kontrollerar också arrayindex för assumed shape- och deferred shape-arrayer mot faktiska allokerade gränser.

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.

Exempel:

gfortran -fcheck=all,no-array-temps foo.f90

Detta kompilerar filen med alla kontroller aktiverade utom varningar för genererade temporära arrayer.

-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.

Detta alternativ inaktiverar tail call-optimering för gfortran-procedurer med teckenargument. Stöd för detta alternativ kommer troligen att tas bort i en framtida version av gfortran.

-fcheck-array-temporaries Föråldrat alias för -fcheck=array-temps.

-fmax-array-constructor= n Kan användas för att öka övre gränsen som tillåts i arraykonstruktorer.

Exempel:

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.

Standardvärdet för n är 32768.

-fstack-arrays Gör att Fortran-kompilatorn placerar alla arrayer med okänd storlek och temporära arrayer på stacken. Om programmet använder mycket stora lokala arrayer kan körtidsgränserna för stackminne behöva utökas.

-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 Lägger i vissa fall till kod i funktionsprologen för att packa om data till ett sammanhängande block vid körning.

-fshort-enums Tillhandahålls för interoperabilitet med C-kod kompilerad med -fshort-enums. GNU Fortran väljer då minsta "INTEGER"-kind som en given uppräknaruppsättning ryms i.

-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 matrisstorleken överskrider en viss gräns.

BLAS-biblioteket måste anges vid länkning.

-fblas-matmul-limit= n Har endast betydelse när -fexternal-blas används. Matrismultiplikation av matriser med storlek större än eller lika med n utförs med anrop till BLAS-funktioner. Standardvärdet är 30.

-finline-matmul-limit= n När front-end-optimering är aktiv kan vissa anrop till den intrinsiska funktionen "MATMUL" infogas direkt. Standardvärdet för n är 30.

-frecursive Tillåt indirekt rekursion genom att tvinga alla lokala arrayer att allokeras på stacken. Detta alternativ 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 Dessa alternativ styr initiering av lokala variabler.

-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 detaljerad initiering ges med de övriga -finit-*-alternativen.

Dessa alternativ initierar inte:

  • objekt med POINTER-attribut
  • allokerbara arrayer
  • variabler som förekommer i en "EQUIVALENCE"-sats

Observera att aktivering av något av -finit-*-alternativen tystar varningar som annars skulle ha getts 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. Om ett "COMMON"-block inte deklareras med konsekventa datatyper överallt kan denna utfyllnad orsaka problem. -fno-align-commons kan användas för att inaktivera automatisk justering.

-fno-protect-parens Som standard respekteras parenteser i uttryck vid alla optimeringsnivåer. Med -fno-protect-parens kan kompilatorn omordna "REAL"- och "COMPLEX"-uttryck för att skapa snabbare kod.

-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.

-faggressive-function-elimination Funktioner med identiska argumentlistor elimineras inom satser, oavsett om funktionerna är markerade som "PURE" eller inte.

Exempel:

a = f(b,c) + f(b,c)

Det blir då endast ett anrop till "f". Detta fungerar endast om -ffrontend-optimize är aktivt.

-ffrontend-optimize Utför front-end-optimering baserad på manipulation av delar av Fortrans parseträd. Aktiveras som standard av alla -O-alternativ utom -O0 och -Og.

Optimeringar inkluderar bland annat:

  • infogning av anrop till "MATMUL"
  • eliminering av identiska funktionsanrop i 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."

Kan inaktiveras 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" med flera forall-triplettar.

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å:

https://gcc.gnu.org/bugs/

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.

En kopia av licensen finns i manualsidan gfdl(7).

FSF:s framsidestext är:

A GNU Manual

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å:

http://gcc.gnu.org/

Om du har en felrapport för denna manualsida, se:

http://gcc.gnu.org/bugs/

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.

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.