Captain Mingo
Captain Mingo

Reputation: 510

How can I setup linux to compile FORTRAN code into windows binaries?

I'm working on a FORTRAN project and I would like to build all of the binaries that I want to maintain on a linux machine that is dedicated for automated builds. I have successfully used mingw to build 32-bit and 64-bit binaries from C source for windows machines on the linux machine with the following packages on Ubuntu.

apt-get install mingw32
apt-get install mingw-w64

Then I run the following commands to actually compile:

gcc -b amd64-mingw32msvc -V 4.4.4 -o <...other options>

However, the mingw packages that I've obtained via apt-get do not include FORTRAN compilers.

Anybody got any ideas on what I can do?

Upvotes: 2

Views: 5473

Answers (4)

hertzsprung
hertzsprung

Reputation: 9893

On Ubuntu 18.04 I use

apt install gfortran-mingw-w64

Then use the compiler x86_64-w64-mingw32-gfortran in place of gfortran. If you're using cmake, you can configure the compiler from the build directory like so:

FC=x86_64-w64-mingw32-gfortran cmake ..

Upvotes: 1

fortranondebian
fortranondebian

Reputation: 43

I know this is an old thread but a few things seem to have changed and people might still be interested in the topic.

Problem: I want to use my linux machine to compile some code and create a .exe that I can send to people using Windows.

Solution: Essentially here: http ://mxe.cc/

What I did:

  • Check to see if your system has all the software you need here
  • run

git clone -b stable https://github.com/mxe/mxe.git

It will download a few small things and create the directory "mxe" (probably in your home folder)

  • cd into that mxe directory and run "make". HOWEVER: this would take hours and take up a few GB on your hard drive so instead run something like

    make mpfr eigen opencsg cgal qt

For more ideas on how to shorten that all see this or the mxe tutorial or somewhere else ;)

  • The easiest way to compile stuff then seems to be something like:

    ~/mxe/usr/bin/i686-pc-mingw32-gfortran -c main.f95

    ~/mxe/usr/bin/i686-pc-mingw32-gfortran main.o -o outfile.exe

Of course you can chose something other than fortran, just consult the mxe/usr/bin to see what its called.

Upvotes: 3

rubenvb
rubenvb

Reputation: 76519

You can always download and install a prebuilt compiler from the MinGW(-w64) project itself:

Windows 64-bit: http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/rubenvb/4.6.2-1/ Windows 32-bit: http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/rubenvb/4.6.2-1/

Just unpack somewhere and add the cross*/bin directory to PATH.

I include (obj)c(++) and fortran.

Upvotes: 1

paulsm4
paulsm4

Reputation: 121649

if you got mingw32 and the Gnu C cross compiler is working for you ... when why not just get the Gnu Fortran cross compiler, too?

http://www.nber.org/sys-admin/mingw32-fortran-fedora.html

EXAMPLE apt-get install mingw32-gcc-fortran

Upvotes: 3

Related Questions