【问题标题】:Compiling Fortran77 with Julia用 Julia 编译 Fortran77
【发布时间】:2017-05-31 09:13:28
【问题描述】:

我有一堆 Fortran77 代码需要用于我的研究,但我无法编译它以在我的 MacBook 上运行,所以我求助于 Julia。我是该语言的新手,但对于我的一生,我无法弄清楚如何直接在 Julia 中执行 Fortran 脚本。我想要的只是拥有一个运行 F77 脚本并将控制权直接交给 Fortran 的程序。我会用 Julia 或 Numpy 重写它,但代码大约 10,000 行,注释不到 200 行,我没有时间。

【问题讨论】:

标签: fortran julia fortran77


【解决方案1】:

从您问题的措辞看来,您想使用 Julia 直接调用 Fortran“脚本”——大概是 Fortran .f 源文件——准确吗?

正如其他人在 cmets 中指出的那样,Fortran 不是脚本语言:您不能直接执行 Fortran 源文件;相反,您必须使用 Fortran 编译器(例如 gfortranifort)将 Fortran 程序转换为您要在其上运行程序的系统的本机库或可执行文件。 Julia 不会对此提供任何帮助,因为 Julia 不是 Fortran 解释器或编译器——它既不能直接运行 Fortran 代码,也不能将 Fortran 源文件转换为可执行文件/库。

但是,如果您已经编译了一个 Fortran 共享库(Linux 上的 .so 文件,macOS 上的 .dylib,Windows 上的 .dll),您可以从 Julia 轻松调用它,如 Integrating Fortran code in Julia 中所述.如果您可以将 Fortran 源代码编译为可执行文件(而不是共享库),那么您不需要任何其他东西来运行它 - 根据定义,可执行文件是独立的。

大多数使用 Fortran 或 C/C++ 等编译语言的项目都带有 Makefiles 或其他机制来帮助调用编译器以生成适当的二进制工件(可执行文件和/或库)。

【讨论】:

  • 谢谢,很抱歉与单词 script 混淆。在物理学中,我们经常互换使用“脚本”和“程序”,尽管我们不应该这样做。你是对的。我有一个 .f 的 Fortran77 程序,但我无法让任何常见的编译器编译它。我尝试了 gfortran 无济于事。从技术上讲,我确实有可执行文件,但它们是为在 SunOS 上运行的旧 Sun 工作站编译的,而我在 Mac 上。
  • 对。这些可执行文件绝对不能在 Mac 上运行,而 Julia 也无法帮助您编译 Fortran。您可以继续尝试找出如何调用 gfortran 来编译代码,或者翻译代码。 10k LOC 并不像看起来那么多——尤其是当从冗长的静态语言到像 Julia 这样的简洁动态语言时,代码缩减 10 倍的情况并不少见。不管怎样,祝你好运!
  • 是的,对不起。我还是 stackexchange 的新手
猜你喜欢
  • 2020-02-14
  • 1970-01-01
  • 1970-01-01
  • 2021-03-06
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多