2013-04-13 26 views
16

Ich habe ein Projekt, das ich für Windows kompilieren möchte. Ich habe das passende Makefile, alles funktioniert mit g ++. Ich lief apt-get install mingw32, heruntergeladen ein 100-ish-MB-Paket, aber ich kann nicht herausfinden, wie Sie es tatsächlich ausführen. Es gibt keine ausführbare Datei und ich kann auch keine Hilfe im Internet finden, also wie kompiliere ich damit eigentlich?MinGW Kreuz kompilieren auf Linux

+0

Wenn Sie den folgenden Befehl von einem Terminal ausführen, sollte es Ihnen die ausführbare Datei des Compilers (g ++ in diesem Beispielfall) sagen. Sie können dann Ihr Makefile entsprechend bearbeiten. "locate mingw | grep g ++" – thedaver64

+0

Wird das Makefile mit den Autotools generiert? – gipi

+0

@gipi Ich kann mich ehrlich gesagt nicht erinnern, ich benutze cmake für meine Projekte. – thedaver64

Antwort

12

Wenn Sie die Ausgabe von dpkg -L mingw32 sehen, können Sie sehen, dass das Paket eine Toolchain enthält, d. H. Eine Reihe alternativer Werkzeuge (Compiler, Linker usw.), die nützlich sind, um Ihren Code in einem anderen System zu kompilieren.

Sie müssen /usr/bin/i586-mingw32msvc-g++ verwenden, um Ihren Code zu kompilieren. Wenn ich mich richtig erinnere, existiert eine Variable, um dem Makefile mitzuteilen, eine solche Toolchain zu verwenden.

+0

Es gibt keine Variable für die Toolchain, aber Sie können Variablen für C- und C++ - Compiler setzen: CC bzw. CXX. –

4

Eine weitere Option ist die Mingw Cross Environment (MXE), die speziell auf Cross Compiling von Linux zu Windows (und in letzter Zeit auch zu Mac) ausgerichtet ist. Das Paket hat bult-in x-Unterstützung für eine große Anzahl von Bibliotheken und wird aktiv entwickelt. Werfen Sie einen Blick auf die Website, um herauszufinden, ob sie Ihren Bedürfnissen entspricht.

Übrigens, es wird empfohlen, dass Sie eher die Entwicklung als die Release-Version verwenden. Dies liegt daran, dass Release-Versionen in der Regel sehr schnell veraltet sind, da Paket-Maintainer (der Bibliotheken) URLs ändern, die dazu führen, dass die MXE-Release-Version beschädigt wird. Die Entwicklungsversion ist in der Regel aktueller.

+0

Es gibt keine Erwähnung von Mac auf der Website? Das scheint ziemlich ordentlich zu sein, ich bin neu, also schätze ich, dass Ihr Tool zuerst den "Cross-Compiler" erstellt und dann muss ich nur Ihre erstellte Toolchain verwenden, um Dinge zu kompilieren. – CMCDragonkai

+0

Nun, es ist nicht "mein", aber das ist ziemlich genau das, was es tut. Ich bin mir nicht sicher über den aktuellen Stand bezüglich der Mac-Unterstützung (ich habe mxe schon lange nicht mehr benutzt). Es wurde in der Vergangenheit erwähnt, dass sie an der Unterstützung arbeiteten, aber ich habe keine Ahnung, ob sie tatsächlich umgesetzt wurde. – Bart

4

benutzte ich diese Postgres zu überqueren kompilieren:

$ sudo apt-get install mingw-w64 
$ ./configure --host=i686-w64-mingw32 --without-zlib # 32 bit 
# or --host=x86_64-w64-mingw32 64 bit 

ref here

Andere Projekte es anders machen, wie ffmpeg:

./configure --target-os=mingw32 --cross-prefix=i686-w64-mingw32- 

oder einige

./configure CC=i686-w64-mingw32-gcc ... 

usw. GL!