Qt wiki will be updated on October 12th 2023 starting at 11:30 AM (EEST) and the maintenance will last around 2-3 hours. During the maintenance the site will be unavailable.

MinGW

From Qt Wiki
Revision as of 12:12, 13 July 2022 by Cristian Adam (talk | contribs)
Jump to navigation Jump to search

En Ar Bg De El Es Fa Fi Fr Hi Hu It Ja Kn Ko Ms Nl Pl Pt Ru Sq Th Tr Uk Zh

MinGW is a free and open source Windows port of the GCC compiler and related tools. Qt supports MinGW as a platform on Windows in addition to Visual Studio compiler by Microsoft. However, it can also be used as a cross-compiler e.g. on Unix (currently not officially supported).

Qt Creator supports compiling with a MinGW toolchain out of the box.

MinGW distributions and versions

There are actually different MinGW toolchains and packages available:

MinGW.org is the original project. The latest version gcc 4.7.2. It only compiles for 32 bit binaries.

MinGW-w64 [mingw-w64.sourceforge.net] is a fork with the original aim to also support generation of 64 bit binaries. By now it also supports a much larger part of the Win32 API. The MinGW-w64 project does host several different binary packages, done by different people.

There are binary installers targetting MinGW for both Qt 4 and Qt 5. Up to Qt 4.8.6, Qt 4 ones are built with a MinGW.org toolchain using gcc 4.4. Newer Qt 4.8 binary packages ship with a mingw-w64 based toolchain. For Qt 5, a newer MinGW-w64 toolchain is actually required.

Toolchains used in Qt binary packages

Qt Version MinGW toolchain
Qt 4.8.5 The binary packages were compiled mingw.org gcc 4.4 toolchain that is unfortunately not officially provided anymore. See also this forum thread [qt-project.org]
Qt 4.8.6, Qt 4.8.7 mingw-builds i686-4.8.2-release-posix-dwarf-rt_v3-rev3
Qt 5.0 mingw-builds x32-4.7.2-release-posix-sjlj-rev8
Qt 5.1 mingw-builds x32-4.8.0-release-posix-dwarf-rev2
Qt 5.2, Qt 5.3 mingw-builds i686-4.8.2-release-posix-dwarf-rt_v3-rev3
Qt 5.4 mingw-builds i686-4.9.1-release-posix-dwarf-rt_v3-rev2
Qt 5.5, Qt 5.6 mingw-builds i686-4.9.2-release-posix-dwarf-rt_v3-rev1
Qt 5.7, Qt 5.9, Qt 5.10, Qt 5.11 mingw-builds i686-5.3.0-release-posix-dwarf-rt_v4-rev0
Qt 5.12, Qt 5.13, Qt 5.14 mingw-builds i686-7.3.0-release-posix-dwarf-rt_v5-rev0, mingw-builds x86_64-7.3.0-release-posix-seh-rt_v5-rev0
Qt 5.15, Qt 6.0, Qt 6.1, Qt 6.2.0, Qt 6.2.1 mingw-builds i686-8.1.0-release-posix-dwarf-rt_v6-rev0, mingw-builds x86_64-8.1.0-release-posix-seh-rt_v6-rev0
Qt 6.2.2, 6.2.3, 6.2.4 mingw-builds x86_64-11.2.0-release-posix-seh-rt_v9-rev1
Qt 6.3.0 -> mingw-builds x86_64-11.2.0-release-posix-seh-rt_v9-rev3

Common problems

Link error 'Undefined reference to _Unwind_Resume'

This error occurs if object files / libraries being linked are compiled with different versions of mingw. The following steps can fix a problem:

  1. Execute
    mingw32-make distclean
    
    in order to remove all object files that was compiled with different mings versions.
  2. Explicitly set library path by setting
    LIBRARY_PATH
    
    environment variable, for example
    set LIBRARY_PATH=c:\mingw\lib
    
    . gcc linker have a very complicated library search algorithm[1] that can result in wrong library being linked (for example, mingw can find installation of strawberry perl in PATH and use it's library).