1

为了解决一些积分问题,我下载了 QUADPACK for fortran 并将所有源文件编译为目标文件。现在,当我想从 QUADPACK 调用子例程时,我需要手动链接它们或使用生成文件/脚本,这样就可以了。但是,由于我使用 QUADPACK 的多个例程和一系列不同的程序,如果我能让 gfortran 自动查找 .o 文件,我的生活会轻松很多。假设我有一个包含所有 .o 文件的目录,我想将其添加为 gfortran 查找目标文件的标准路径。这样我就可以在我的程序中调用一个子程序并编译它,而不必找出我需要的 witch .o 文件并手动链接它们。

我知道 -l 标志将解决问题,但我想知道是否有更简单/懒惰的方法来做到这一点。我在想也许我可以对编译器进行一些更改并重新制作它,但这并不是我真正想要开始搞砸的事情。

顺便说一句,我正在使用 Ubuntu。希望你们理解我的问题,并且有一个简单的解决方案。

PS:这是我现在这样做的方式,为了调用一个例程。

#!/bin/sh
gfortran -c int.f95
gfortran -o int int.o qagie.o qelg.o qk15i.o qpsrt.o r1mach.o xermsg.o j4save.o
xerprn.o xersve.o xerhlt.o xercnt.o fdump.o xgetua.o i1mach.o
./int

如您所见,它只是一个用于编译和运行 int.f95 的简单 shell 脚本

4

1 回答 1

1

您可以创建一个库并将您的目标文件添加到其中。然后,当您使用 gfortran 作为链接器时,将该库(即 -l)传递给 gfortran。它只会提取它需要的目标文件。稍后,如果您更改了一个向库贡献了目标文件的源代码文件,您可以只替换库中的那个。网上有很多关于如何做到这一点的信息。

于 2012-10-06T14:13:01.303 回答