module - Fortran 模块的静态库

标签 module fortran

我不是一个非常专业的 Fortran 程序员,但现在我已经编写了许多子例程(在 Fortran 90 中),我必须将它们放在模块中(由其他子例程和程序中的“use”语句使用)以避免编写接口(interface)。我必须将这些模块与用 F77 编写的旧代码一起使用。
我不希望编译器一次又一次地编译这些模块。所以我在编译这些模块后从“.o”文件创建了一个静态库:
ar rc libmymath.a module1.o module2.o module3.o
但是,我仍然需要保留这些模块的“.mod”文件,以便能够在我的代码中“使用”它们。

我的问题:是否可以将这些“.mod”文件打包到静态库存档“.a”中(就像我们对 .o 文件所做的那样),以便将所有内容都封装在单个文件静态库中?

P.S:我的意思是在我的系统中的任何地方,它们都使用 gfortran 64 位。

最佳答案

不,这是不可能的。

与 C/C++ 类似,.mod文件就像一个头文件。它描述了模块的内容和USE <module>类似于 #include <header> .

这些 mod 文件是编译器(甚至通常是版本)特定的,并且是必需的,因为模块名称会破坏函数,因此需要一个查找表来查找结果函数名称。

关于module - Fortran 模块的静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14190463/

相关文章:

haskell - 如何重新导出合格的导入模块?

Fortran 4.7.2/4.8.1 错误 : There is no specific subroutine for the generic 'vode' at (1)

c++ - Fortran的参数语句和C/C++的#define语句类似吗?

python - 使用 python-ctypes 将 fortran 与 python 接口(interface)

python - 使用 CIGAR 推断序列的长度

perl - 我怎样才能 "require"某个版本的 Perl 模块?

android - android应用程序中的模块间(库项目)通信

module - 在 Fortran 90 中使用模块内部的子例程

c - 将字符串参数从 C 传递到 Fortran 子例程时出现问题

c# - 尾数介于 0 和 1 之间的科学计数法的 .NET 格式说明符