MXE (M cross environment) is a GNU Makefile that compiles a cross compiler and cross compiles many free libraries such as SDL and Qt. Thus, it provides a nice cross compiling environment for various target platforms, which:
- is designed to run on any Unix system
- is easy to adapt and to extend
- builds many free libraries in addition to the cross compiler
- can also build just a subset of the packages, and automatically builds their dependencies
- downloads all needed packages and verifies them by their checksums
- is able to update the version numbers of all packages automatically
- directly uses source packages, thus ensuring the whole build mechanism is transparent
- allows inter-package and intra-package parallel builds whenever possible
- bundles ccache to speed up repeated builds
- integrates well with autotools, cmake, qmake, and hand-written makefiles.
- has been in continuous development since 2007 and is used by several projects
- Runtime: MinGW-w64
- Host Triplets:
i686-w64-mingw32
x86_64-w64-mingw32
- Packages:
- static
- shared
- GCC Threading Libraries (
winpthreads
is always available): - GCC Exception Handling:
- Default
- i686: sjlj
- x86_64: seh
- Alternatives (experimental)
- i686: dw2
- x86_64: sjlj
- Default
Please see mxe.cc for further information and package support matrix.
For some packages additional dependencies are required to be installed in order to build:
- Python 3
You can use the make
command to start the build.
Below an example of cross-compiling the GTK3 project to one statically linked Windows 64-bit library:
make gtk3 -j 8 MXE_TARGETS='x86_64-w64-mingw32.static'
Please see mxe.cc for more information about how-to build the MXE project.
Within the MXE makefiles we either define $(PKG)_GH_CONF
or $(PKG)_URL
, which will be used to download the package.
Next the checksum will be validated of the downloaded archive file (sha256 checksum).
Updating a package or updating checksum is all possible using the make commands, see usage for more info.
There are several approaches to recursively finding DLL dependencies (alphabetical list):
- go script
- pe-util packaged with mxe
- python script
- shell script