Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 添加标准路径以查找.o文件gfortran_Linux_Fortran_Gfortran - Fatal编程技术网

Linux 添加标准路径以查找.o文件gfortran

Linux 添加标准路径以查找.o文件gfortran,linux,fortran,gfortran,Linux,Fortran,Gfortran,为了解一些积分,我下载了QuadpackforFortran,并将所有源文件编译成目标文件。现在,当我想从QUADPACK调用子例程时,我需要手动链接它们,或者使用makefile/脚本,这样就可以了。然而,由于我使用了来自QUADPACK的多个例程以及一系列不同的程序,如果我能让gfortran自动查找.o文件,我的生活会变得更加轻松。假设我有一个包含所有.o文件的目录,我想添加它作为gfortran查找对象文件的标准路径。这样我就可以在我的程序中调用一个子例程并编译它,而不必找出我需要的wi

为了解一些积分,我下载了QuadpackforFortran,并将所有源文件编译成目标文件。现在,当我想从QUADPACK调用子例程时,我需要手动链接它们,或者使用makefile/脚本,这样就可以了。然而,由于我使用了来自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

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

您可以创建一个库并将您的对象文件添加到其中。然后,当您使用gfortran作为链接器时,将该库(即-l)传递给gfortran。它将只提取所需的对象文件。稍后,如果您更改了一个向库中提供对象文件的源代码文件,则可以仅替换库中的该源代码文件。网络上有很多关于如何执行此操作的信息。

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

罗杰,这似乎是最好的方法。我正在寻找一种方法,将库添加为“标准”库,这样我就不必每次都指定要使用它,但当我想到它时,这可能并不明智。因此,现在我创建了一个库文件,但当我尝试使用它时,我会出错。据我所知,gnulinker有问题/usr/bin/ld:2:/usr/bin/ld:Syntax错误:换行符意外收集2:ld返回了2个退出状态。看来这是最好的方法。我正在寻找一种方法,将库添加为“标准”库,这样我就不必每次都指定要使用它,但当我想到它时,这可能并不明智。因此,现在我创建了一个库文件,但当我尝试使用它时,我会出错。据我所知,gnulinker有问题/usr/bin/ld:2:/usr/bin/ld:语法错误:换行符意外收集2:ld返回2退出状态