Capisco che gfortran possa compilare f90 o f95? Come fa a sapere quale compilazione? Inoltre può compilare il codice f77? Ubuntu ha già un compilatore fortran o devo scaricare gfortran?Come può dire gfortran se sto compilando il codice f90 o f95?
risposta
gfortran può indovinare determinate cose dall'estensione del file; se il file ha un'estensione di .f, .f90, f95, .f03 o .f08, assumerà il formato fisso (.f) o libero con gli standard appropriati. Ma puoi forzarlo a compilare (diciamo) il codice di fortran2003 con l'opzione -std = f2003. Ad esempio, dal documentation,
-std = std
Specificare lo standard a cui si prevede il programma di conformarsi, che può essere uno dei `F95' ,` F2003' , `F2008' , `gnu 'o` legacy'. Il valore predefinito di per std è `gnu ', che specifica un superset dello standard Fortran 95 che include tutte le estensioni supportate da GNU Fortran, sebbene vengano fornite avvertenze per le estensioni obsolete non consigliate per l'uso nel nuovo codice. Il valore "legacy" è equivalente a ma senza gli avvisi per le estensioni obsolete e potrebbe essere utile per i vecchi programmi non standard. I valori "f95", "f2003" e "f2008" specificano la conformità rigorosa rispettivamente agli standard Fortran 95, Fortran 2003 e Fortran 2008; gli errori sono riportati per tutte le estensioni oltre lo standard di lingua pertinente e vengono fornite avvertenze per le funzioni di Fortran 77 consentite ma obsolete negli standard successivi . `-STD = f2008ts' permette al Fortran standard di 2008 tra cui le aggiunte della specifica tecnica (TS) 29113 su un ulteriore Interoperabilità dei Fortran con C.
Si noti che, con poche eccezioni, gli standard FORTRAN sono altamente compatibile con le versioni precedenti, in modo che molto "bello", conforme allo standard, il codice fortran-77 sia valido anche per il codice fortran 2003. Il problema principale è che molto codice fortran degli anni '80 e precedenti non è né "bello" né conforme allo standard.
Si può persuadere gfortran che un file .f è Fortran 95 o superiore? '-std = f95' non è sufficiente. – hertzsprung
@hertzsprung 'gcc -x f95 file.f' può funzionare –
Sì, gfortran può compilare FORTRAN 77 e Fortran 90,95 ecc. Ha molte funzionalità del 2003 & implementate nel 2003. Per il codice Fortran 90/95/2003/2008 una buona estensione da utilizzare è .f90. Alcuni altri compilatori non riconoscono .f95, .f2003, ecc. E vuoi veramente rinominare i tuoi file quando esce un nuovo standard? Usa .f o .for per FORTRAN 77. La differenza principale è il layout sorgente che il compilatore si aspetta: forma libera per .f90, forma fissa per .f o .for. (I tipi di file maiuscoli causeranno l'esecuzione del preprocessore.) È possibile forzare il layout a forma di modulo fisso con le opzioni -ffisso-modulo -ffisso-lunghezza-nessuna.
Vedere anche [Come può Gfortran dire se sto compilando codice f90 o f95?] (Https://stackoverflow.com/q/10884260/608639), [Makefile con diversi tipi di sorgente] (https: // StackOverflow. it/q/8940552/608639), [cmake, fortran 2008 e estensione file .f08] (https://stackoverflow.com/q/25005017/608639), [suffisso corretto per il file sorgente Fortran 2003 - compilatore Intel Fortran] (https://stackoverflow.com/q/20269076/608639), ecc. – jww