cygwinmingwmsysmingw-w64msys2

How can I install MinGW-w64 and MSYS2?


I am trying to build some open source library. I need a package management system to easily download the dependencies. At first I am using MinGW and MSYS. But the included packages are limited. Someone told me to use Mingw-w64 and MSYS2.

I downloaded the mingw-w64-install from here. When running, it reports the following error. How can I fix it?

Enter image description here

And by the way, from the Mingw-w64 download page, I see a lot of download links. Even Cygwin is listed. How are Cygwin and Mingw-w64 related?

Enter image description here

My current understanding is, in the time of MinGW and MSYS, MSYS is just a nice addon to MinGW, while in Mingw-w64 + MSYS2, MSYS2 is stand-alone and Mingw-w64 is just a set of libraries it can work with. Just like Cygwin can download many different packages.


Solution

  • Unfortunately, the MinGW-w64 installer you used sometimes has this issue. I myself am not sure about why this happens (I think it has something to do with Sourceforge URL redirection or whatever that the installer currently can't handle properly enough).

    Anyways, if you're already planning on using MSYS2, there's no need for that installer.

    1. Download MSYS2 from this page.

    2. After the install completes, click on the MSYS2 UCRT64 in the Start menu (or C:\msys64\ucrt64.exe).

      If done correctly, the terminal prompt will say UCRT64 in magenta letters, not MSYS.

    3. Update MSYS2 using pacman -Syuu. If it closes itself during the update, restart it and repeat the same command to finish the update.

      You should routinely update your installation.

    4. Install the toolchain: (i.e. the compiler and some extra tools)

      pacman -S mingw-w64-ucrt-x86_64-toolchain
      
    5. Install any libraries/tools you may need. You can search the repositories by doing

      pacman -Ss name_of_something_i_want_to_install
      

      e.g.

      pacman -Ss gsl
      

      and install using

      pacman -S package_name_of_something_i_want_to_install
      

      e.g.

      pacman -S mingw-w64-ucrt-x86_64-gsl
      

      and from then on the GSL library will be automatically found by your compiler!

      Make sure any compilers and libraries you install have this package prefix: mingw-w64-ucrt-x86_64-. Only use unprefixed packages for misc command-line utilities (such as grep, sed, make, etc), unless you know what you're doing.

    6. Verify that the compiler is working by doing

      gcc --version
      

    If you want to use the toolchains (with installed libraries) outside of the MSYS2 environment, all you need to do is add C:/msys64/ucrt64/bin to your PATH.

    MSYS2 provides several compiler flavors, UCRT64 being one of them. It should be a reasonable default.