fortran链接错误

时间:2012-09-28 14:11:34

标签: gcc linker fortran gfortran

我在使用gfortan编译器编译fortran程序时遇到问题。 主程序位于main.f.所以,我在控制台写道:

gfortran D:\test\test.f

但它显示了很多错误,例如:

 C:\Users\Efds~1\AppData\Local\Temp\cchFNGgc.o:test.f:<.test+0x3a>: undefined reference to '_gridw_'
 C:\Users\Efds~1\AppData\Local\Temp\cchFNGgc.o:test.f:<.test+0x3a>: undefined reference to '_gridz_'
 etc.

我认为这是因为函数gridwgridz等位于其他* .f文件中。但我不知道如何将这些全部联系在一起。

另外,我尝试使用Compaq Visual Fortran Complier,但它没有帮助我。

2 个答案:

答案 0 :(得分:2)

用于编译和链接多个源文件到一个可执行文件的基本命令是

gfortran -o executable source1.f source2.f source3.f

注意您指定的任何.f文件都在其所依赖的任何其他源文件的右侧。所有这些以及更多内容都在编译器的文档中有详细介绍。

答案 1 :(得分:0)

如上所述,您可以使用相同的命令编译多个文件,但这很不寻常。

您可能更喜欢先编译到目标文件(“.o”):

gfortran -c gridw.f
gfortran -c gridz.f

然后编译程序

gfortran test.f grodw.o gridz.o

如果你要链接很多文件,建立一个库可能会很有趣:

ar cru mylib.a gridw.o gridz.o
gfortran test.f mylib.a

如果您将库命名为libSOMETHING.a,则只需编写

即可
gfortran test.f -lSOMETHING