FORTRAN 95:可以在不共享源代码的情况下共享模块吗?

时间:2013-08-29 21:42:10

标签: module fortran fortran95

我希望能够在不共享源代码的情况下共享FORTRAN 95模块。是否可以这样做(可能是通过共享.MOD文件)?如果这是相关的,我在Plato上使用Silverfrost FTN95编译器。到目前为止,我只能通过使用外部模块的源代码来完成这项工作。这是一个例子:


file:module_test.f95

module TEST
contains

  subroutine 1
  code...

end module TEST

file:main_program.f95

include "module_test.f95"
program MAIN_PROGRAM
use TEST
implicit none

code...

end program MAIN_PROGRAM

那么,如果没有我的文件module_test.f95和主代码上的行include "module_test.f95",有人可以使用我的模块TEST吗?

非常感谢!

2 个答案:

答案 0 :(得分:5)

你可以提供两件事。 1)编译的目标代码,可能是库形式。缺点是这将取决于编译器,操作系统,可能是编译器版本,因此可能是支持的大负担。 2)您可以编写例程的等效接口描述,而不是提供源代码,以便其他人可以use模块。这至少是源代码级别,不依赖于编译器。如果您更改了任何程序的参数,那么编写一些工作就可以进行维护。

答案 1 :(得分:0)

正如M. S. B.推荐的那样,我正在使用的解决方案是以库的形式编译模块。我明确地告诉我这样做是为了这可能对某人有帮助,因为这是我当时不知道的。

首先,需要编译模块module_test.f95。使用gfortran编译器,可以通过命令gfortran -c module_test.f95来完成。这将创建两个文件module_test.omodule_test.mod。这些是可以在不共享源代码的情况下共享的已编译模块文件。

现在到主程序。要使用该模块,仍然需要添加行use TEST但不能添加include <source code>

program MAIN_PROGRAM
use TEST
implicit none

<...code...>

end program MAIN_PROGRAM

现在编译主程序时,必须在命令中包含.o模块文件的位置。在上面的例子中,它将是gfortran main_program.f95 module_test.o(假设module_test.o与项目位于同一文件夹中)。这将使用模块编译主程序,而无需其源代码。