为了解决一些积分,我为fortran下载了QUADPACK,并将所有源文件编译成目标文件。现在,当我想从QUADPACK调用子程序时,我需要手动链接它们或使用makefile /脚本,这很好用。但是,由于我使用QUADPACK中的多个例程以及一系列不同的程序,如果我能够自动查找.o文件,它将使我的生活变得更轻松。假设我有一个包含所有.o文件的目录我想添加它作为gfortran查找目标文件的标准路径。这样我就可以在我的程序中调用一个子程序,然后编译它而不必找到我需要的巫婆.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
正如您所看到的,它只是一个简单的shell脚本来编译和运行int.f95
答案 0 :(得分:1)
您可以创建一个库并将目标文件添加到其中。然后在使用gfortran作为链接器时将该库(即-l)传递给gfortran。它将只提取它需要的目标文件。稍后,如果您将一个提供目标文件的源代码文件更改为库,则可以只替换库中的那个。网上有很多关于如何做到这一点的信息。