I was quite surprised that no one on the internet has written a simple list of what to do to get a code compiled with MinGW before. Seems like you have to have 3 PhDs in computer science to read the directions (or maybe I’m just having a bad day). Nonetheless, we’re here to help.
By the way, you may be asking “What is MinGW?” It is a port of the GNU compilers on Windows (the GNU compilers being the ones that are used on things like Linux and the computing clusters). Its website is here. “Wait a sec, why would we want to use MinGW if we already have Cygwin? Doesn’t it do the same thing?” Yes. But, sometimes things won’t work on Cygwin. Also, I think MinGW is a lot smaller and lighter weight than Cygwin so if you are limited in resources that’s another reason.
Anyway, here goes:
- Go to the MinGW website: http://www.mingw.org/.
-
Click Downloads, and select ‘mingw-get-setup.exe.’
-
This is an installer that will grab all the proper packages for you. Make sure to keep the installation directory the same as default: ‘C:\MinGW\’. Once you click through the set of initial prompts, you will see an install manager. That install manager has a set of checkboxes, that ask you if you want gfortran, g++, etc. Right click on the check boxes and select ‘Mark for Installation.’
-
In the program, under the Installation menu, select ‘Apply Changes’
-
Wait for everything to download and install, and follow the instructions. After you are done, it won’t tell you anything, you should just trust that it has completed.
-
Note that there is a utility called MINSYS that is installed with MinGW. What that is, is kind of like ‘Cygwin Lite’. It is a small set of linux commands and a shell, that you can use to compile programs. We aren’t going to cover MINSYS here but, this is a set of instructions for how to use it. But what we want to do, is compile programs in the native DOS command window of Windows. So we need to do a few more things.
-
Next we need to set the PATH of windows to know where MinGW is. Why? Well you want to open a command window in any directory in Windows, and type ‘g++’ and have the computer know what it is you’re talking about. For Windows XP – Windows 7 users, check out instructions here. We are using Windows 8, so we can use the search functionality. If you type ‘environment’ in the Windows search box, you’ll see a link for ‘Set System Environment Variables’. Click it.
-
It brings you to a window that is titled ‘System Properties’. Click the button that says ‘Environment variables…’ In that window, in the second box, you can scroll down and see a variable called Path. It should start with ‘C:\windows\system32;C:\windows;’ Highlight Path and click Edit…
-
At the very end of the list, type a ; (without a space) and ‘C:\MinGW\bin’ So your path should look like: ‘C:\windows\system32;C:\windows;[otherstuff];C:\MinGW\bin
-
Click OK three times, to get out of all of the windows.
-
This step is very important! Restart your computer, otherwise the Path settings won’t take.
-
Now, after you are restarted, get to the command line by typing ‘cmd’ in a search box. A black, old-timey window will pop up. If you type the command: ‘g++’ , it should tell you “g++: fatal error: no input files” This means g++ is installed, and it is on the path correctly, and it (ostensibly) works.
-
You will likely need an additional command instead of just the vanilla ‘g++’ and ‘gfortran’ If you are using a Makefile, you need an additional utility. On Linux this is called ‘make’, but here it’s called something different: mingw32-make. Thanks to this forum post for this (and other helpful) hint(s)!
You should be good to go. Now, you have a minimalistic way to compile stuff that is supposed to work using GNU compilers (on Unix and the clusters) on Windows! As usual, comments questions and concerns should be posted below.