0

我在使用 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,但它对我没有帮助。

4

2 回答 2

2

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

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

注意.f您指定的任何文件都被命名为它所依赖的任何其他源文件的右侧。所有这些以及更多内容都在编译器的文档中得到了很好的介绍。

于 2012-09-28T14:21:40.917 回答
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
于 2012-10-03T15:06:43.287 回答