Windows Fortran Compiler

0 views
Skip to first unread message

Arlyne Doepner

unread,
Aug 5, 2024, 12:48:52 AM8/5/24
to wrinafroba
GFortranis the name of the GNU Fortran project. The main wiki page offers many helpful links about GFortran, as well as Fortran in general. In this guide, the installation process for GFortran on Windows, Linux, macOS and OpenBSD is presented in a beginner-friendly format based on the information from GFortranBinaries.

Windows Subsystem for Linux (WSL): An official compatibility layer for running Linux binary executables on Windows. With Windows Subsystem for Linux GUI one can run text editors and other graphical programs.


Finally, you can switch between different versions or set the default one with the update-alternatives (see manpage). There are many online tutorials on how to use this feature. A well structured one using as an example C and C++ can be found here, you can apply the same logic by replacing either gcc or g++ with gfortran.


OpenCoarrays is an open-source software project that produces an application binary interface (ABI) used by the GNU Compiler Collection (GCC) Fortran front-end to build executable programs that leverage the parallel programming features of Fortran 2018. Since OpenCoarrays is not a separate compiler, we include it here, under gfortran.


While with gfortran you can compile perfectly valid code using coarrays, the generated binaries will only run in a single image (image is a Fortran term for a parallel process), that is, in serial mode. OpenCoarrays allows running code in parallel on shared- and distributed-memory machines, similar to MPI:


As a followup from this, in the short term what I need is to build a statically-linked binary of the latest version of my package. In linux it is just about installing gfortran and cmake, and doing make.


I have just spent one hour trying to install some fortran compiler on Windows, without success. I have no real experience with doing anything on Windows, so probably this is just my lack of knowledge.


I can recommend MSYS2, it gives you a bash shell with a Cygwin-like runtime as base and (several) MinGW native toolchains on top, which allows linking static binaries for distribution outside of MSYS2. From my experience this is the closest Unix experience one can get on Windows, while still being able to create native binaries. However, it might appear a bit complex due to the different available environments on the first glance.


After installation there will be several terminals available (msys2, mingw64, mingw32, ucrt64, clang64, clang32). The msys2 terminal is a pure Cywgin-like environment, software from this environment is available in all environments. mingw64, mingw32 and ucrt64 are based on GCC/MinGW, here you get gfortran as Fortran compiler. In clang64 and clang32 you can instead rely on flang as Fortran compiler.


On Windows, if you need as comprehensive a Linux tool experience as possible, and the latest packages (its gfortran will always keep the latest version), MSYS2 is very good, which I have been using.


I managed to document creating Windows executables on Linux by cross-compiling. My experience is detailed here. If you need access to Windows DLLs it becomes more complicated, but if you stick to straight Fortran, it is nice to have one shell script that compiles both executables. Now if I could only cross-compile to OSX.


The program reads problem data from the standard input stream, using Unit 5. This, by itself, is fine, but the program attempts to read the input twice, with a REWIND(5) in between. Depending on the operating system and the Fortran compiler being used, this may fail if the standard input is obtained by redirection from a file.


In various places, there are WRITE statements in which the output list contains references to the character function i5hex. However, the function i5hex itself contains WRITE statements to an internal file, and such recursive I/O statements may not work or may not work correctly.


If I was to read it once I would need at least to know the number of lines, to preallocate a vector of strings with proper size. Is there any way to do that? Or a push? At the same time that has not been an issue in the many years Packmol is out there.


The Fortran standard has a section on Internal Files. In Fortran 2018, for example, the section is 12.4. Recursive I/O can be avoided by using a temporary character variable which is set to the function value, and placing that temporary character variable in the I/O list. For example, instead of


There is also a separate distribution of mingw-w64 that can be installed without MSYS2, but I don't recommend it, as the last files there have gcc-8.1.0, from 2018 (apart from a recent build by Ray Linn that includes the Ada, but not the Fortran compiler).


Another compiler that is now free is Intel Fortran : you have to install Microsoft Visual Studio Community, Intel oneAPI Base Toolkit and Intel oneAPI HPC Toolkit. More information here. Available on Linux, macOS and Windows (of course, Visual Studio is needed only on Windows). Intel oneAPI is at least partly open source, not sure about the Fortran compiler.


MSYS2 is a much smaller package (in terms of disk pace needed), and is used by several other free projects: R (Rtools), Octave and Strawberry Perl all include parts of it, including the gcc compilers.


To compile Fortran code for Windows you need a Fortran compiler for Windows. Microsoft neither provides a built-in one nor offers one for sale. Third-party compilers are available, including gfortran, but you'll need to install one yourself. If you want to use gfortran in particular, or if you like it simply because you don't have to spend money to get it, then I would recommend obtaining it as part of mingw-w64. Alternatives are available from multiple vendors, some free of charge, but most for sale.


Fortran is one of the earliest imperative computer programming languages around. It is often used for scientificand numeric programs. This page lists free Fortran compilers for various operating systems. Note that the differentsoftware listed are compliant with different Fortran standards, eg, ANSI Fortran 77, Fortran 95, Fortran 2003,Fortran 2008, Fortran 2018, and so on, so be sure to get the appropriate one for your purpose. Some of them may alsocome complete with debuggers,editors and anintegrated development environment (IDE).


The MinGW-w64 project provides the libraries, headers and runtime needed for the GNU compilers, among whichis their Fortran compiler, to run on a Windows system. They allow you to create both32 bit and 64 bit programs with the compilers. The project also provides cross compilers, so that you cancompile (say) a Windows program from a Linux system if you choose. Precompiled binaries can be obtained froma variety of sources, includingthe official MinGW-w64 binaries site,and third-party sites such as the MSYS2 project.


Flang is the Fortran compiler front end of the LLVM project (which also includes other compilers, suchas a C/C++ compiler).The current version (as at the date this was written) implements Fortran 2003 (with some features fromFortran 2008), while the next version (currently foundhere) implements Fortran 2018.The link above leads to the source code for the compiler. Thedownloadable binaries (ie, executables)can be found here. Note that the binaries are for Linux (both x86-64 and OpenPOWER) only, although work ona Windows port has begun.


Silverfrost FTN95 is a Fortran 95 compiler that supports Fortran 77, Fortran 90 and Fortran 95. The compiler generates32-bit and 64-bit exectuables for Windows and the Microsoft .NET framework. It comes with CHECKMATE,a tool that lets programmers check the correctness of their code at runtime. Also included is Plato 3 (an IDE),full source level debugging, documentation and examples. You may only generate code for your personal use on yourhome computer, and all executables will display a banner on execution.


The Oracle Developer Studio includes C, C++ and Fortran compilers for Linux (specifically the Red Hat and Oracledistributions) andSolaris. Based on information displayed on the download page at the date this entry was written, it looks like you canfreely use the compiler for developing commercial applications if you wish. (As with all software, you should of courseverify this yourself, since the situation sometimes changes over time.)


gfortran, part of the GNU Compiler Collection, is a free Fortran 95/2003/2008 compiler. Like all things from GNU,it comes primarily in source code form. Precompiled binaries (executables) are available for Windows from third-partysites (such as those listed on this page), and if you run Linux, you can probably just get it from your distribution'srepositories.


This is a well-known Fortran to C converter that comes with source code. The site alsoincludes pre-compiled binaries (executables) for MSDOS and Microsoft Windows, althoughthese are by no means the only systems supported; the compiler works on Unix systems likeBSD, Linux, etc, though you have to compile it yourself on those systems.Libraries containing the runtime support needed (together with the C source code)are also included. You need a C compiler to generatebinaries from your Fortran sources.


[Update: this website appears to be gone. For the record, it was previously located atwww.g95.org.]G95 is an open source Fortran 95 compiler. At the time this was written, most of the ISO Fortran 95 standardhas been implemented. Platforms supported include Linux(x86, Intel IA64, AMD x86_64), Windows, Macintosh OS X, FreeBSD,Sparc Solaris and HP-UX.


The purpose of the GNU Fortran (GFortran) project is todevelop the Fortran compiler front end and run-time librariesfor GCC, the GNU Compiler Collection. GFortran development is partof the GNU Project. We seek to bringfree number crunching to a broad spectrum of platforms and users.


In particular, the project wishes to reach users of theFortran language, be it in the scientific community, education, or commercial environments. The GFortran compiler is fully compliantwith the Fortran 95 Standard and includes legacy F77 support.In addition, a significant number of Fortran 2003 and Fortran 2008features are implemented. Please give it a try. If you encounter problems,contact us at the mailing list or file a problem report.

3a8082e126
Reply all
Reply to author
Forward
0 new messages