Błąd kompilacji Fortran - niezdefiniowane odniesienie

Próbuję skompilować program fortran, który wykorzystuje kilka modułów. Otrzymuję błąd, gdy go kompiluję i doprowadza mnie to do szału. Błąd jest spowodowany dodaniem jednego podprogramu i ma miejsce, gdy próbuję ponownie skompilować program:

Główny program zawiera te dwie linie:

-

call read_step(nStepOne,molOne)
call read_step(nStep,mol)

-

To wywołuje jeden z podprogramów w pliku „fileio.f90”:

-

subroutine read_step(n,tape)

implicit none

integer, intent(in) :: tape
integer, intent(out) :: n

character(len=6) :: dum

rewind(tape)
read (tape,*)
read (tape,*) dum, n
rewind(tape)
return
!
end subroutine read_step

-

Kiedy próbuję go skompilować, pojawia się następujący błąd:

ifort -o SpIdMD.x *.o -static-intel -openmp 
SpIdMD.o: In function `MAIN__':
SpIdMD.f90:(.text+0x3b2): undefined reference to `read_step_'
SpIdMD.f90:(.text+0x3c5): undefined reference to `read_step_'
make: *** [SpIdMD.x] Error 1

Inne wywołania podprogramów w tym samym module nie dały żadnego błędu, a ja po prostu nie widzę żadnej różnicy między wywołaniami „starych podprogramów” a wywołaniem, które właśnie utworzyłem.

Przykładem jednego z tych „starych podprogramów”, które nie dają żadnych skarg, jest:

W głównym programie:

call get_dim(n_atom,nSnap,mol)

W pliku fileio.f90:

subroutine get_dim(n,n_snap,tape)

implicit none

integer,intent(in) :: tape
integer,intent(out) :: n, n_snap
integer :: m

rewind(tape)
read (tape,*,err=1,end=2) n
rewind(tape)

m = 0
do while (.true.)
   read (tape,*,err=1,end=3)
   m = m +1
end do
3   n_snap = m/(n + 2)
if (m.ne.(n_snap*(n + 2))) stop  'unexpected end of input file'

rewind(tape)

return
!
1   stop 'error in input file'
2   stop 'unexpected end of input file'
end subroutine get_dim

Nie mam absolutnie pojęcia, dlaczego to zachowanie. Byłbym wdzięczny, gdyby ktoś pomógł mi rozwiązać ten koszmar. Dzięki!

questionAnswers(2)

yourAnswerToTheQuestion