gpt4 book ai didi

fortran - 编译具有多个部分的 Fortran 程序

转载 作者:行者123 更新时间:2023-12-04 20:54:39 73 4
gpt4 key购买 nike

我对 Fortran 和整个 Intel 编译器非常陌生(我正在使用基于 Windows 的 Intel 编译器和 IMSL 库,没有 Visual Studio 集成,因此只有命令行)。

问题应该非常简单:我有一个需要编译的 Fortran 程序,它存储为四个不同的源代码部分。主程序(和一些子程序)存放在名为central.for的代码文件中,另外还有三个文件,我们分别称它们为s1.for、s2.for和s3.for,每个文件只包含一个子程序(让称它们为 sub1-sub3) 并且没有主程序。主程序调用存储在 s1-s3 和 central.for 中的子程序。

问题是我应该如何编译它:

当我尝试编译 central.for 时,它给出了 error LNK2019: unresolved external symbol _SUB1 referenced in function _MAIN__ .同样,它为 SUB2 和 SUB3 提供相同的消息。

当我尝试编译 s1.for-s3.for 时,它给出 error LNK2019: unresolved external symbol _MAIN__ referenced in function _main
很明显,我需要以某种方式链接它们。但是,我不知道如何

最佳答案

您需要先编译程序的各个部分而不进行链接,然后将它们全部链接在一起。所以你的命令行看起来像这样:

ifort /c s1.for
ifort /c s2.for
ifort /c s3.for
ifort /c central.for
/c/compile-only 的缩写; /nolink也可以。这将分别生成文件 s1.o、s2.o、s3.o 和 central.o。以上可以按任何顺序完成。现在各个部分连接在一起,你会做类似的事情
ifort /exe:central.exe central.o s1.o s2.o s3.o

构建可执行文件。

请注意,如果您正在编译使用模块的现代 fortran 代码,并且(例如)central.for 中的主程序有类似 use s2 的行,这将变得更加复杂。 .在这种情况下,您必须在 Central 之前编译(即使使用 /c ) s2;当你在这种情况下编译 s2 时,你会得到一个额外的输出文件 s2.mod。编译central.for 需要该s2.mod 文件。但考虑到文件扩展名,这可能是较旧的代码,模块可能不是问题。

关于fortran - 编译具有多个部分的 Fortran 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5863795/

73 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com