Compilation frotran + C linux

Résolu/Fermé
kammans - 31 mars 2009 à 14:14
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 31 mars 2009 à 16:40
Bonjour,
'ai le probleme suivant.
Je compile un prog fortran. Je reccupere le .o
Ensuite je compile un autre prog en C qui fait appelle aux fonctions du
prog fortran vu plus haut.
Lors de l'edition de liens, j;ai ce type d'erreur:

$ g77 -c -O -fno-underscoring fort.f
$ gcc -Wall test.c -o test fort.o
fort.o: In function `fort':
fort.f:(.text+0xc): undefined reference to `s_wsle'
fort.f:(.text+0x20): undefined reference to `do_lio'
fort.f:(.text+0x28): undefined reference to `e_wsle'
collect2: ld a retourné 1 code d'état d'exécution

et quand je compile les 2 avec gcc ça passe pas non plus:
gcc -c -O -fno-underscoring fort.f
gcc -Wall test.c -o test fort.o
fort.o: In function `fort':
fort.f:(.text+0x3c): undefined reference to `_gfortran_st_write'
fort.f:(.text+0x53): undefined reference to `_gfortran_transfer_integer'
fort.f:(.text+0x5b): undefined reference to `_gfortran_st_write_done'
collect2: ld a retourné 1 code d'état d'exécution

mais quand je compile les deux avec g77 ça marche!

merci de m'expliquer ce qui se passe dans les 3 cas. et est ce que dans le 1er cas gcc fait des references vers des librairies qu'il trouve pas, et si c le cas les quels et comment les installer.

merci!
A voir également:

4 réponses

Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
31 mars 2009 à 14:37
Salut.
Voici un lien qui devrais t'intéresser :
http://www.yolinux.com/TUTORIALS/LinuxTutorialMixingFortranAndC.html
Pour ton souci, il faut lier avec une bibliothèque des fonctions fortran de base.
Selon ta version de gcc, soit -lgfortran soit -lg2c.
0
merci beaucoup!
RESOLU
0
ça marche quand j'utilise gcc avec -lgfortran
mais par contre il faut toujours utiliser le meme compilateur:

g77 -c -O -fno-underscoring fort.f
gcc -Wall test.c -o test fort.o -lgfortran
fort.o: In function `fort':
fort.f:(.text+0xc): undefined reference to `s_wsle'
fort.f:(.text+0x20): undefined reference to `do_lio'
fort.f:(.text+0x28): undefined reference to `e_wsle'
collect2: ld a retourné 1 code d'état d'exécution
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
31 mars 2009 à 16:40
fait un "which g77" et un "which gcc" je pense que tu as deux versions de gcc installer.
La version de gcc inférieur à 4 utilise comme compilateur g77 (ou f77) et g2c comme bibliothèque.
La version de gcc supérieur à 4 utilise comme compilateur fortran gfortran (supporte le fortran 90) et comme bibliothèque -lgfortran.
gcc n'est qu'un appel de devanture, ce sont d'autre logiciel qui font le boulot dérrière selon l'extension des fichier ou les options choisies.
0