Я представляю, что это стандартная проблема с noob, но, проведя все утро в Интернете, я все равно решил вас обмануть. Я нахожусь в Mac OS 10.9, и я бы хотел вызвать LAPACK для собственной функции из программы Fortran. Мне было приятно познакомиться с Фортраном только вчера, поэтому, пожалуйста, извините любые глупые ошибки.Ссылка на LAPACK в Fortran на Mac OS X
Это минимальный пример, который я хочу, чтобы запустить:
program eigtest
complex A(3,3)
real eigs(3)
A(1,1) = cmplx(1,0)
A(1,2) = cmplx(0,2)
A(1,3) = cmplx(3,0)
A(2,1) = cmplx(0,-2)
A(2,2) = cmplx(5,0)
A(2,3) = cmplx(1,-1)
A(3,1) = cmplx(3,0)
A(3,2) = cmplx(1,1)
A(3,3) = cmplx(7,0)
call heevd(A, eigs)
write(*,*) eigs
end
я узнал, что на OS X, LAPACK является частью системы ускоряться, так что я пытался что-то вроде:
gfortran -o eigtest -framework accelerate eigtest.f95
но компоновщик жалуется:
Undefined symbols for architecture x86_64:
"_heevd_", referenced from:
_MAIN__ in ccleuVFO.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
Отсутствующий метод является одним из LAPACK. heevd вычисляет собственные значения эрмитовой матрицы. Я использую gfortran, как указано в вопросе. У меня нет проблем с компиляцией программ Fortran без вызовов LAPACK. Поскольку OS X 64-разрядная, я не думаю, что проблема в том, что 64-разрядная версия не доступна. – Jonas
Да, документы сделали это ясно. Я думаю, если LAPACK требует, чтобы этот метод был связан, ваша задача - найти библиотеку, в которой она живет, и добавить ее в ваш путь к ссылке. – duffymo