Wie rufe ich die MinGW-cross-compiler unter Linux?
Habe ich ein Projekt, dass ich möchte, um cross-kompilieren für Windows. Ich habe die entsprechende Makefile und alles funktioniert mit g++
. Ich habe
$ apt install mingw-w64
runtergeladen und 500 MB-Pakete, aber ich kann nicht herausfinden, wie tatsächlich es. Es gibt keine mingw
ausführbare Datei, so wie ich eigentlich kompilieren mit ihm?
- Wenn Sie führen Sie den folgenden Befehl in einem terminal aus, es sollte Ihnen sagen, die ausführbare Datei des compiler ( g++) in diesem Beispiel-Fall ). Sie können dann Bearbeiten Sie Ihr makefile entsprechend. "suchen Sie mingw | grep g++"
- Ist die
Makefile
die mit Hilfe der autotools? - Ich kann ehrlich nicht erinnern, ich cmake für meine Projekte.
- dies ist wichtig, da gibt es Optionen in
cmake
zu geben die toolchain - In cmake ich nur eine mit "cmake -G "MinGW Makefiles" für das kompilieren unter windows und "cmake -G "Unix Makefiles" bei der Zusammenstellung der auf meiner linux-box zu haben, die das Makefile gebaut. Ist es das, was Sie sind, nach? Wenn nicht, müssen Sie aufwändig 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie einen Blick auf die Datei-Listen auf dem Ubuntu-Paket-webserver für
mingw-w64
's konstituierende Pakete:gcc-mingw-w64-x86-64
g++-mingw-w64-x86-64
binutils-mingw-w64-x86-64
mingw-w64-x86-64-dev
gcc-mingw-w64-i686 -
g++-mingw-w64-i686 -
binutils-mingw-w64-i686 -
mingw-w64-i686-dev
Können Sie sehen, dass
mingw-w64
bietet eine toolchain, d.h. eine Reihe alternativer tools (compiler, linker, Header, etc.) verwendet, kompilieren Sie Ihren code für ein anderes system.Angenommen, Sie möchten, kompilieren von C++ code für eine 64-bit-system, müssen Sie
/usr/bin/x86_64-w64-mingw32-g++-win32
. Sie können dieCXX
Umgebungsvariable zu sagen, die meisten Makefiles zu verwenden, der compiler, um code zu kompilieren.Weitere option ist, um einen Blick auf Mingw-Cross-Umgebung (MXE), die speziell gezielt auf cross-compiling von Linux auf Windows (und in letzter Zeit auch Mac). Das Paket hat bult-in xupport für eine große Anzahl von Bibliotheken und wird aktiv weiterentwickelt. Werfen Sie einen Blick auf die website, um herauszufinden, ob es Ihren Bedürfnissen entspricht.
Durch die Art und Weise es wird Ihnen angeraten, die Entwicklung eher als die release-version. Dies ist, weil die release-Versionen sind in der Regel veraltet sehr schnell, wegen der Paket-maintainer (der Bibliotheken) änderung von URLs, was in der MXE-release-version immer gebrochen. Die Entwickler-version ist in der Regel mehr up-to-date.
Ich diese verwendet, um cross-kompilieren postgres:
ref hier
Anderen Projekte, die es anders machen, wie ffmpeg:
oder einige
etc. GL!