Вот мой минимальный пример:
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
При компиляции с простым
gfortran test.f90
или при включении библиотеки, такой как Slatec
gfortran test.f90 -lslatec
Это работаетнормально.
Однако при изменении библиотеки на -llapack из -lblas программа зависает во время выполнения при вызове testfunc ().Обратите внимание, что мой пример кода здесь на самом деле не использует ни одну из этих библиотек.Последнее, что я вижу, это «Запись с основного», тогда ничего не происходит, и мне нужно CTRL-C, чтобы восстановить контроль.При зависании процесс, похоже, не использует циклы ЦП.
Странно сейчас то, что, если я закомментирую оператор записи внутри testfunc (), он будет работать постоянно.
Итак, мой вопрос на самом деле: могут ли эти библиотеки действительно помешать мне печатать внутри моих собственных функций?Зачем?Как?
(На самом деле я работаю над более крупной программой, которая требует lapack и blas, поэтому я, очевидно, не могу просто перестать ссылаться на них.)