Anem a explicar-ho pas a pas.
Des de la terminal
Normal (sense mòduls ni carpetes)
Compilem:
gfortran programa.f90 -o programa
Executem:
.\programa
Executables (subcarpeta exes)
Compilem
gfortran programa.f90 -o exes/programa
Executem
.\exes\progrma
Debugging (afegim atributs opcionals al compilar)
S’utilitzen sols al compilar però serveixen també durant l’execució.
gfortran -Wall -Wextra -g -fbacktrace -fbounds-check programa.f90 -o programa
Evidentment si es vol es pot combinar amb la subcarpeta pels exes o les opcions que veurem a continuació.
Mòduls interns (subcarpeta mods)
(Pels mòduls que estan dins el mateix fitxer que el programa principal)
-Jseguit del nom de la carpeta indica a on s’han de generar els arxius .mod
-Iseguit del nom de la carpeta indica al programa principal a on ha de trobar els arxius .mod
gfortran -Jmods -Imods programa.f90 -o programa
Nota: el linter de l’extensió Modern Fortran pot generar un .mod sols al obrir el programa principal. Per evitar que això passi cal modificar una petita del settings.json tal com està explicat aquí.
Mòduls externs
1a Part (aprendre a compilar-los i enllaçar-los)
(Pels mòduls que es troben en un fitxer apart però en el mateix directori que el programa principal)
Compilem primer el mòdul utilitzant
-cgfortran -c subrutines.f90
Això no sols generarà un .mod per cada mòdul sinó també un .o pel fitxer que conté els mòduls.
Ara compilem el programa principal tot enllaçant-lo amb el .o generat
gfortran programa.f90 subrutines.o -o programa
Si tinguéssim diversos fitxers (cadascun amb els seus mòduls), un cop els hem compilat individualment amb
-c, els podem enllaçar tots a la vegada fentgfortran programa.f90 *.o -o programa
D’aquesta manera podem compilar tots els mòduls, estiguin a un sol fitxer o a varis.
2a Part (fer-ho bé amb subcarpeta mods)
Compilem els mòduls i indiquem amb -J a on es guarden els .mod i amb -o on es guarda el .o
gfortran -c subrutines.f90 -Jmods -o mods/subrutines.o
I ara compilem el programa principal i enllacem amb el .o
gfortran programa.f90 mods\subrutines.o -Imods -Jmods -o exes/programa
O, per enllaçar-ho amb tots els possibles fitxers
gfortran programa.f90 mods\*.o -Imods -Jmods -o exes/programa
Extra — Mòduls externs
Mateix directori
A vegades pot ser convenient tenir un fitxer .f90 que té tots els mòduls que podem necessitar, per no allargar el programa principal.
Si tenim un fitxer .f90 amb alguns mòduls, i aquest es troba en el mateix directori que el nostre programa, podem “compilar el fitxer” fent, per exemple:
gfortran -c subrutines.f90 -Jmods -o mods/subrutines.o
I després al compilar el programa principal, fer-ho tot enllaçant-lo, és a dir fent:
gfortran programa.f90 mods\*.o -Imods -Jmods -o exes/programa
D’aquesta manera amb dues tasques ja podríem fàcilment compilar i executar codi que utilitza mòduls externs que es troben dins el mateix directori.
- Aniríem compilant un a un els fitxers .f90 que contenen els mòduls que volem utilitzar
- Amb el programa principal obert, utilitzaríem la segona tasca per compilar i executar el codi.
Nota: evidentment a aquestes opcions també se’ls pot posar l’opció de debugging, ho veurem més endavant.
Directori extern
Consultar scripts PowerShell de
build_external_directory_modules.ps1.