2017-05-30 25 views
2

我有一堆Fortran77代码,需要用于我的研究,但是我无法编译它在我的MacBook上运行,所以我转向了Julia。我对这门语言很陌生,但在我的生活中,我无法弄清楚如何直接在Julia中执行Fortran脚本。我只需要一个运行F77脚本的程序,并直接将控制权交给Fortran。我只是用Julia或Numpy重写它,但是大约有10,000行代码和不到200行评论,我没有时间。用Julia编译Fortran77

+2

在julia可以调用它之前需要编译它。 使用'ccall'请参阅[docs](https://docs.julialang.org/en/stable/manual/calling-c-and-fortran-code/)为fortran做ctrl + f以获得fortran特性。 另请参阅:https://stackoverflow.com/questions/27498755/examples-of-integrating-fortran-code-in-julia 和https://stackoverflow.com/questions/28373693/calling-a-fortran-函数从julia返回一个数组未知函数段 –

+5

[集成Fortran代码在Julia中的示例]的可能重复(https://stackoverflow.com/questions/27498755/examples-of-integrating-fortran -code-in-julia) –

+6

Fortran程序不是*脚本*它们需要编译为编译器 –

回答

4

从你的问题的措辞看来,你似乎想用Julia直接调用Fortran“脚本” - 大概是Fortran .f源文件 - 是否准确?如其他人在评论中指出的那样,Fortran不是一种脚本语言:您不能直接执行Fortran源文件;相反,您必须使用Fortran编译器(例如gfortran,ifort)将Fortran程序转换为要运行程序的系统的本机库或可执行文件。由于Julia不是Fortran解释器或编译器,因此Julia对此无能为力 - 它既不能直接运行Fortran代码,也不能将Fortran源文件转换为可执行文件/库。

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

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

+0

谢谢,对于脚本这个词的混淆感到抱歉。在物理学中,我们经常使用'脚本'和'程序',尽管我们不应该这样做。 你是对的。我有一个Fortran77程序,它是'.f',我无法使用任何常用编译器来编译它。我尝试gfortran无济于事。从技术上讲,我确实有可执行文件,但它们是针对在SunOS上运行的旧Sun工作站编译的,而且我在Mac上编译。 –

+1

对。这些可执行文件绝对不会在Mac上运行,而Julia无法帮助您编译Fortran。您可以继续尝试弄清楚如何调用gfortran来编译代码或翻译代码。 10k LOC并不像看起来那么多 - 特别是因为从冗长的静态语言到简洁的动态类似Julia时,代码缩减10倍并不罕见。无论哪种方式,祝你好运! – StefanKarpinski

+0

@BobCaddy:你介意接受这个答案,因为它似乎解决了你的问题? – StefanKarpinski