哪些文件?哪些子程序?

Which files? Which subroutines?

我有一个包含大约 100 个文件的 Fortran 项目。所有这些都已编译,但并非所有 运行 都需要。还有一些文件包含混合使用/未使用的子例程。

有没有办法知道 运行 所需的最少文件/子例程/函数集?

是的。 从顶级主程序开始。

Compile/Link 它并获取未满足引用的列表。

对于每个不满意的引用,添加包含它的文件。

重复这两个步骤,直到不再有不满意的引用。

这将删除干净构建不需要的所有文件。 是的,这是很多工作。事情并不总是那么容易。

如果您想知道 运行 不需要什么特定输入, 为此,您需要一个覆盖工具,例如 gcov。 未使用的例程将显示覆盖计数为 0。 那么如果你真的想摆脱它们, 将它们提取到单独的源文件中,以便您可以排除它们,并确保它们没有被调用。