Ich arbeite an einem Problem für einen meiner Computerkurse und ich war in einem Fehler stecken geblieben, nachdem ich versucht habe, es für einige Zeit durchzuarbeiten.`undefinierter Verweis auf` sgtsv_'` beim Kompilieren eines Tridiagonallösers
Insbesondere arbeite ich an dieser Fortran-Routine:
program linsolve_sgtsv
implicit none
integer, parameter :: lda=10,ldb=lda,nrhs=1
real :: dl(lda-1),d(lda),du(lda-1),b(ldb,nrhs)
integer :: n,info
n = 10
dl(1:n-1) = 1+(1/11); d(1:n) = 2; du(1:n-1) = 1-(1/11)
b(1:n,1) = (/1,1,1,1,1,1,1,1,1,1/)
call sgtsv(n,nrhs,dl,d,du,b,ldb,info)
if (info==0) then
print *, '--- x is ----------------'
print '(g22.16)', b(1:n,1)
else
print *, 'info = ',info
end if
end program linsolve_sgtsv
Diese Routine löst lineare Systeme Gaußsche Eliminations zu verwenden, wenn die Matrizen tridiagonal sind.
Allerdings, wenn ich versuche, eine Make-Datei erstellen mit:
gfortran linsolve_sgtsv.f90 -o linsolve.f90
ich folgende Fehlermeldungen erhalten:
tmp/ccCiRHve.o: In function `MAIN__':
linsolve_sgtsv.f90:(.text+0x100): undefined reference to `sgtsv_'
collect2: error: ld returned 1 exit status
Ich glaube nicht, dass es das Problem ist, obwohl die Benennung der Ausgabedatei '.f90' sicherlich eine schlechte Idee ist. Ich denke, Vishnu verlinkt einfach nicht in LAPACK. Zumindest, um die Dateinamen zu sehen. Verwenden Sie einfach "-llapack" und vergewissern Sie sich, dass LAPACK installiert ist. –