2

我需要在我的 Fortran 90 代码中使用 MRQMIN 子例程。在这个子程序里面还有一些其他的模块nrtype.90nrutil.f90nr.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_' 

我在编译过程中遗漏了一些东西吗?

4

1 回答 1

3

nr.f90只提供子程序的接口,而不是子程序本身。

您必须单独编译gaussj.f90covsrt.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
于 2013-10-18T12:33:52.550 回答