© Thorsten Kattanek, Berlin 2022

MXE (M cross environment)


Was ist MXE und wofür braucht man es?

MXE ist ein GNU-Makefile welches einen Cross-Compiler kompiliert und damit dann viele OpenSource Bibliotheken wie z.B. SLD und Qt kompiliert. Kurz gesagt: Ihr könnt mit MXE, Windows Binaries unter UNIX bzw. Linux erstellen ohne selber Windows zu benutzen.

MXE ist so ausgelegt das es auf jedem UNIX System läuft und auch angepasst werden kann. Es baut zusätzlich zum Cross-Compiler viele freie Bibliotheken, lädt die benötigten Pakete selbständig herunter und überprüft diese mit einer eindeutigen Prüfsumme. MXE kann auch die Versionsnummern automatisch aktualisieren und verwendet dafür direkt die jeweiligen Quellpakete. Somit ist Sichergestellt das der gesamte Build Prozess transparent ist.

Um wiederholte Builds zu beschleunigen lässt sich MXE gut in autotools, cmake, qmake und in Handgeschrieben Makefiles integrieren. Ich selber benutze dafür lieber ein Bash Skript da ich die Windows Version maximal zum Release erstelle.

Wer zusätzlich mehr über die Geschichte von MXE wissen möchte kann gerne meine komplette Ausarbeitung als PDF runter laden --> Download.

Einrichtung

An einem Beispiel zeige ich euch wie ihr MXE auf euer System installiert. Ich benutze dafür hier Kubuntu also Ubuntu mit KDE als Desktop.

Vorraussetzungen

Um mit MXE zu starten benötigt es folgende Komponenten die Ihr auf euer System installiert haben müsst. Und das sind folgende:

  • Autoconf ≥ 2.68
  • Automake ≥ 1.11.3
  • Bash
  • Bison
  • Bzip2
  • Flex ≥ 2.5.31
  • GCC (gcc, g++)
  • gdk-pixbuf
  • Git ≥ 1.7
  • GNU Coreutils
  • GNU Gettext
  • GNU gperf
  • GNU Make ≥ 3.81
  • GNU Sed
  • GNU Tar
  • Intltool ≥ 0.40
  • LibC for 32-bit
  • Libtool ≥ 2.2
  • Lzip
  • OpenSSL-dev ≥ 1.01
  • p7zip (7-Zip)
  • Patch
  • Perl
  • Perl XML::Parser
  • Python
  • Ruby
  • UnZip
  • Wget
  • XZ Utils
  • zlib

Ab jetzt muss alles in der Konsole / Terminal ausführen.

Unter Debian / Ubuntu reicht dann folgender Aufruf:

sudo apt-get install autoconf automake autopoint bash bison bzip2 flex g++ g++- multilib gettext git gperf intltool libc6-dev-i386 libgdk-pixbuf2.0-dev libltdl-dev libssl-dev libtool-bin libxml-parser-perl lzip make openssl p7zip-full full patch perl python ruby sed unzip wget xz-utils

Wer ein anderes Systeme benutzt kann hier nachschauen wie ihr eure Pakete installieren müsst. https://mxe.cc/#requirements

void C64Class::HardReset()
{
    wait_reset_ready = false;
    SetReset(false,false);
    SDL_Delay(40);
    SetReset(true,true);
}