Compilazione di routine e caricamento in libreria di moduli
Compilazione di routine
e caricamento in libreria di moduli compilati
in ambiente
UNIX-LINUX, come ottenere da un sorgente f77 un eseguibile.
La
sintassi del fortran 77 per la compilazione di una routine di nome nomesub dal
sorgente nomesub.f e' la seguente:
f77
-c nomesub.f -I$home/f77/include
-I
indica la directory di librerie per gli include (oltre quelle di sistema)
-L indica la directory di librerie per il link (oltre quelle di sistema)
Tale
comando produce il modulo compilato di nome nomesub.o. Il caricamento del modulo
nomesub.o nella libreria libnome.a avviene con il comando ar :
ar
-r libnome.a nomesub.o
Se
la libreria non esiste essa viene creata.
Note: Il comando ar -vt libnome.a permette di listare i moduli oggetto contenuti
nella libreria: ognuno di essi corrisponde ad un sorgente Fortran caricato per
esempio con lo script olib.
Il comando ar -w libnome.a permette di listare i nomi simbolici disponibili
per il linker: essi corrispondono a tutti i nomi di subroutine e function presenti
all'interno di ogni modulo oggetto contenuto nella libreria. E' possibile utilizzare
ovunque la normale sintassi generica per i nomi dei files:
ar
-r libnome.a *.o
carichera'
tutti i moduli .o dell directory corrente nella libreria libnome.a.
- Una procedura
semplice: olib
E' disponibile lo script olib che permette la compilazione del sorgente di
una o piu' moduli Fortran ed il loro caricamento in una libreria. Tale script
puo' essere copiato nella directory etc dell'utente ed se deve adattato alle
esigenze specifiche fornendo i nomi delle directories di Include e le eventuali
opzioni per il compilatore secondo la normale sintassi. Si consiglia l'utente
di creare le sue librerie sotto la directory lib e di scegliere un nome che
le identifichi univocamente in modo chiaro: infatti i comandi UNIX per la
compilazione/link non permettono di associare in modo esplicito ed univoco
le librerie alle directory in cui esse risiedono. E' conveniente caricare
i moduli Fortran delle routines in sottodirectory della directory contenente
la libreria. In in particolare la procedura olib assume tale configurazione
e deve essere fatta eseguire all'interno della sottodirectory contenente le
routine sulle quali agisce.
Esempio:
$home/f77/lib/libnome.a - nome della libreria, che necessariamente deve avere
prefisso lib e suffisso .a $home/f77/lib/per_src - directory contenente le
routines suba, subb....
$home/f77/lib/per_src/suba.f - routines $home/f77/lib/per_src/subb.f
- L'utility
standard: make
L'utility standard in UNIX per l'automatizzazione delle operazioni di compilazione
e link e' l'utility make ;infatti dopo aver inglobato tutti i parametri di
compilazione in un file chiamato makefile il richiamo della utility make permette
in un solo passo l'intera procedura di compilazione.
Il suo utilizzo permette di trattare in modo automatico solo quelle routines
che sono state modificate direttamente, oppure indirettamente attraverso modifiche
delle include che esse contengono.