我有一堆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程序不是*腳本*它們需要編譯爲編譯器 –