我有一堆Fortran77代码,需要用于我的研究,但是我无法编译它在我的MacBook上运行,所以我转向了Julia。我对这门语言很陌生,但在我的生活中,我无法弄清楚如何直接在Julia中执行Fortran脚本。我只需要一个运行F77脚本的程序,并直接将控制权交给Fortran。我只是用Julia或Numpy重写它,但是大约有10,000行代码和不到200行评论,我没有时间。用Julia编译Fortran77
回答
从你的问题的措辞看来,你似乎想用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或其他机制来帮助调用编译器来生成适当的二进制工件(可执行文件和/或库)。
谢谢,对于脚本这个词的混淆感到抱歉。在物理学中,我们经常使用'脚本'和'程序',尽管我们不应该这样做。 你是对的。我有一个Fortran77程序,它是'.f',我无法使用任何常用编译器来编译它。我尝试gfortran无济于事。从技术上讲,我确实有可执行文件,但它们是针对在SunOS上运行的旧Sun工作站编译的,而且我在Mac上编译。 –
对。这些可执行文件绝对不会在Mac上运行,而Julia无法帮助您编译Fortran。您可以继续尝试弄清楚如何调用gfortran来编译代码或翻译代码。 10k LOC并不像看起来那么多 - 特别是因为从冗长的静态语言到简洁的动态类似Julia时,代码缩减10倍并不罕见。无论哪种方式,祝你好运! – StefanKarpinski
@BobCaddy:你介意接受这个答案,因为它似乎解决了你的问题? – StefanKarpinski
- 1. 如何编译julia脚本?
- 2. Julia每次编译脚本?
- 3. Fortran77编译器处理PI = 4.D0 * DATAN(1.D0)
- 4. 分解在FORTRAN77
- 5. FORTRAN77到FORTRAN90
- 6. Fortran77用户输入验证
- 7. Julia的并行编程
- 8. 如何在Julia中翻译字典?
- 9. 用python编译编译vim
- 10. 在Fortran77中打印图表?
- 11. 什么意思在Fortran77中
- 12. 使用FORTRAN77子程序中的函数
- 13. 我用Julia吧?
- 14. 用cygwin/gfortran编译或用acml编译
- 15. 编译mysql连接器用mingw编译C++,编译错误
- 16. 如何用matlab编译sdk编译类?
- 17. 如何编译和使用WINAVR编译
- 18. 用C++编译器编译c代码
- 19. 用ISPC编译器编译OpenMP程序
- 20. 用C++编译器编译Apache
- 21. 用预编译的静态库编译
- 22. 用C++编译器编译C99文件
- 23. 使用g ++编译器编译boost.asio
- 24. 用g ++编译器编译Multi2Sim
- 25. 使用scons编译器编译C++
- 26. 编译编译器错误编译GCC
- 27. 编译器如何编译编译器?
- 28. 用py_compile编译
- 29. 用libfreenect2编译
- 30. 编译用make
在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返回一个数组未知函数段 –
[集成Fortran代码在Julia中的示例]的可能重复(https://stackoverflow.com/questions/27498755/examples-of-integrating-fortran -code-in-julia) –
Fortran程序不是*脚本*它们需要编译为编译器 –