Bonjour,
Je viens d'apprendre à construire un module et j'essaiE de le compiler et de l'utiliser dans un petit programme Fortran90.
Voici mon programme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
program test
 
use test2
 
real :: c,d
print*,'Donnez a et b'
read(*,*) c,d
 
write(*,'(f6.2)') toto(c,d)
 
stop
end program test
Voici le module :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
module test2
 
implicit none
 
contains
 
function toto(a,b)
real :: a,b,toto
 
 toto = sqrt(a**2 + b**2)
 
end function toto
 
end module test2
Et voici le makefile que j'utilise pour compiler tout ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
F90FLAGS = -u -w -O3
FF = ifort
 
#ROOT = nrtype.o nrutil.o nr.o
 
NRMOD  = test2.o
 
NR =    test.o
 
# Suffix Rules
.SUFFIXES: .o .f90
 
.f90.o:
	${FF} -c ${F90FLAGS} $<
 
 
default:	${NRMOD} ${NR}
 
 
clean:
		rm -f *.o *.mod *~
Je tape make et ça compile, je n'ai pas de message d'erreur. Ce que je fais, je crée mon exécutable, à savoir :
ifort -o test test.o
Et là j'obtiens le message suivant :
test.o: In function `MAIN__':
test.f90.text+0xca): undefined reference to `test2_mp_toto_'
Je viens de faire plusieurs forums, je n'ai pas trouvé solution. Quelqu'un pourrait m'aider svp !
Merci à vous