l'erreur dans ton programme vient de son extension (*.for):
cette extension est réservée pour les vieux Fortran ( <77 ) du coup il faut commencer à la septième colonne.
essaye de le renommer en "bonjour.f90" et... oooooohhhhhh magie!!! cette fois-ci c'est le "free-form" qui est utilisé et donc ton code source est bien interprété par le compilo!!!!
alors CVF est bien mais ne permet pas d'apprendre: il vaut mieux commencer comme tu dit par la compilation à partir d'un terminal (dos, shell ...etc...) cela permet de mieux comprendre le fonctionnement de la "conversion code-source à code-exécutable" appelé par abus de langage "compilation" cela se passe en 3 temps (souvent le premier n'est pas nécessaire)
-Pré-compilation
-Compilation (la vraie cette fois)
-édition de liens
Précompilation: permet les copier-colle de code dans les fichier (exemple les #include du C/C++) en fortran cette étape est généralement pas nécessaire...
Compilation: transforme le code-source en code-machine (des 0100111001...) en gros, pour simplifier, chaque fonction est traduite... (exmple avec gcc ou gfortran la création des fichier .o, avec les visual machin, la création des fichier .obj) qui ne sont que des objets...
Enfin, l'édition de de lien (link en anglais dans le texte) c'est l'étape de mise en relation des fonctions rendant le code machine capable d'être exécuter (création du .exe sous windows)
avec ton exemple, renommé "bonjour.f90", l'étape de précompilation n'est pas nécéssaire, on commence par la compilation:
1 2
|
gfortran -g -c bonjour.f90 |
détail: "-g" -> on veut stocker les infos de débug
"-c" -> ne fait QUE l'étape de compilation
résultat: on voit apparaitre dans notre répertoire un fichier "bonjour.o"
ensuite l'édition de lien:
gfortran -g -o bonjour.exe bonjour.o
détail: "-o bonjour.exe" -> je veux que mon fichier éxécutable s'appelle "bonjour.exe (si ce champ n'est aps renseigné, le nom par défaut est "a.exe")
"bonjour.o" -> c'est la liste des fichiers que je veux relier
pour faire tout d'un coup, il suffit de dire:
gfortran -o bonjour.exe bonjour.f90
cependant, prenons un exemple un tout petit peu plus compliqué:
j'ai deux fichier: "main.f90" et "second.f90":
main.f90:
1 2 3
| program bonjour
call ecrit_bonjour
end program bonjour |
second.f90:
1 2 3
| subroutine ecrit_bonjour
write(*,*)"bonjour"
end subroutine ecrit_bonjour |
ce programme fait exactement la même chose que bonjour.f90 mais pour le rendre éxécutable, il faut compiler séparément les deux fichier, voilà comment je fais:
1 2 3
| gfortran -g -c main.f90
gfortran -g -c second.f90
gfortran -g -o bonjour2.exe second.o main.o |
détail: première ligne -> il compile main.f90, il ne connais pas "ecrit_bonjour" mais il s'en fout, il suppose que c'est définit ailleurs
seconde ligne -> il compile la routine ecrit_bonjour pas de soucis
dernière ligne: il s'aperçoit que main appelle une fonction externe mais on lui indique où la trouver (dans second.o) donc il les mets en relation et crée l'exécutable
Partager