Here is my minimal example:
program test
implicit none
real :: testfunc
write(*,*) "Writing from main"
write(*,*) testfunc()
end program test
function testfunc() result(y)
real :: y
write(*,*) "Write from function g"
y=1.0
return
end function testfunc
When compiling with a simple
gfortran test.f90
or when including a library like Slatec
gfortran test.f90 -lslatec
It works fine.
However, when changing the library to -llapack of -lblas, then the program hangs at runtime
when calling testfunc(). Note that my example code here does not actually use any of these libraries. The last thing i see is "Writing from main", then nothing happens, and i have to CTRL-C to regain control. When hanging, the process does not appear to be using any CPU cycles.
The strange thing now is that, if i comment out the write statement inside testfunc(), it works all the time.
So my question is really: Can these libraries really prevent me from printing inside my own functions? Why? How?
(I'm actually working on a larger program which needs lapack and blas, so i obviously can't just stop linking to them.)
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…