ошибка при компиляции nr.f90

Мне нужно использовать подпрограмму MRQMIN в моем коде Fortran 90. Внутри этой подпрограммы есть еще несколько модулей nrtype.90, nrutil.f90 и nr.f90. Я компилирую все эти модули и свой код с помощью этих команд

ifort -c nrtype.90  
ifort -c nrutil.f90  
ifort -c nr.f90    
ifort test.f90 nrtype.o nrutil.o nr.o -o test 

но я получаю эту ошибку

/tmp/ifortcx4Tb3.o: In function `mrqmin_IP_mrqmin_private_':  
   test.f90:(.text+0x4041): undefined reference to `gaussj_'  
   test.f90:(.text+0x4896): undefined reference to `covsrt_'     
   test.f90:(.text+0x48a5): undefined reference to `covsrt_' 

я что-то пропустил здесь во время компиляции?


person user2717742    schedule 18.10.2013    source источник
comment
У меня есть обе функции gaussj и covsrt как в подпрограмме mrqmin, так и в nr.f90. MRQMIN использует эти три модуля, а nr.f90 использует nrtype.f90. У меня есть команда использования в MRQMIN и nr.f90. Но у меня нет функции `mrqmin_IP_mrqmin_private_'   -  person user2717742    schedule 18.10.2013
comment
То есть функции gaussj и covsrt, а также подпрограмма mrqmin находятся в одном модуле в файле nr.f90?   -  person Alexander Vogt    schedule 18.10.2013
comment
нет, mrqmin — это подпрограмма, которую я использую в своем основном коде test.f90, а все остальные модули используются mrqmin users.polytech.unice.fr/~dedale/cours/maths_physique_chimie/, но эти две функции используются с как nr.f90, так и mrqmin   -  person user2717742    schedule 18.10.2013


Ответы (1)


nr.f90 предоставляет подпрограммам только интерфейсы, а не сами подпрограммы.

Вы должны скомпилировать gaussj.f90 и covsrt.f90 отдельно и указать их также (я пробовал это для gfortran, но это должно работать и с ifort):

gfortran -c gaussj.f90
gfortran -c covsrt.f90
gfortran test.f90 mrqmin.o nr.o nrtype.o nrutil.o gaussj.o covsrt.o
person Alexander Vogt    schedule 18.10.2013
comment
Большое спасибо, это сработало для gaussj.f90, но не могли бы вы прислать мне ссылку, по которой я также могу скачать covsrt.f90? я не могу найти - person user2717742; 18.10.2013
comment
Я использовал предоставленную вами ссылку (она находится в том же каталоге ;-) - person Alexander Vogt; 18.10.2013