我不是一个非常专业的 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/