wake-up-neo.com

Wie kompiliere ich für Windows unter Linux mit gcc / g ++?

Ich habe einige Effekte in C++ (g ++) mit freeglut unter Linux geschrieben und kompiliere sie mit

g++ -Wall -lglut part8.cpp -o part8

Also habe ich mich gefragt, ob es möglich ist, mit g ++ statisch kompilierte ausführbare Windows-Dateien zu erstellen, die alles Notwendige enthalten?

Ich habe kein Windows, also wäre es wirklich cool, wenn ich das unter Linux machen könnte :)

93
Louise

mingw32 existiert als Paket für Linux. Sie können damit Windows-Anwendungen übergreifend kompilieren und verknüpfen. Es gibt ein Tutorial hier im Code :: Blocks Forum . Beachten Sie, dass sich der Befehl beispielsweise in x86_64-w64-mingw32-gcc-win32 Ändert.

Ubuntu hat beispielsweise MinGW in seinen Repositories:

$ apt-cache search mingw
[...]
g++-mingw-w64 - GNU C++ compiler for MinGW-w64
gcc-mingw-w64 - GNU C compiler for MinGW-w64
mingw-w64 - Development environment targeting 32- and 64-bit Windows
[...]
76
AndiDog

Eine Möglichkeit zum Kompilieren für Windows unter Linux ist mingw. Ich habe ein sehr hilfreiches Tutorial gefunden hier .

Führen Sie den folgenden Befehl aus, um mingw32 auf Debian-basierten Systemen zu installieren:
Sudo apt-get install mingw32 mingw32-binutils mingw32-runtime

Zum Kompilieren Ihres Codes können Sie Folgendes verwenden:
i586-mingw32msvc-g++ -o myApp.exe myApp.cpp

Manchmal möchten Sie die neue Windows-Anwendung direkt unter Linux testen. Sie können Wein dafür verwenden, obwohl Sie immer bedenken sollten, dass Wein Fehler haben könnte. Dies bedeutet, dass Sie möglicherweise nicht sicher sind, ob ein Fehler in wine, Ihrem Programm oder beiden vorliegt. Verwenden Sie wine daher nur für allgemeine Tests.

Führen Sie zum Installieren von Wein Folgendes aus:
Sudo apt-get install wine

26

Vorgeschlagene Methode gab mir Fehler auf Ubuntu 16.04: E: Kann Paket mingw32 nicht finden

================================================ ========================

Um dieses Paket auf Ubuntu zu installieren, benutze bitte folgendes:

Sudo apt-get install mingw-w64

Nach der Installation können Sie es verwenden:

x86_64-w64-mingw32-g++

Bitte beachten Sie!

Für 64-Bit-Verwendung: x86_64-w64-mingw32-gc ++

Für 32-Bit-Verwendung: i686-w64-mingw32-g ++

14
0x8BADF00D

Installieren Sie einen Cross-Compiler wie mingw64 von Ihrem Paketmanager. Kompilieren Sie dann wie folgt: Anstatt einfach gcc aufzurufen, rufen Sie i686-w64-mingw32-gcc für 32-Bit-Windows oder x86_64-w64-mingw32-gcc" für 64-Bit-Windows. Ich würde auch das --static Option, da das Zielsystem möglicherweise nicht alle Bibliotheken enthält.

Wenn Sie eine andere Sprache wie Fortran kompilieren möchten, ersetzen Sie -gcc mit -gfortran in den vorherigen Befehlen.

13
Pedro Miranda

Ich habe mingw unter Linux verwendet, um Windows ausführbar in C zu machen. Ich vermute, C++ würde auch funktionieren.

Ich habe ein Projekt, ELLCC, das Clang und andere Dinge als Cross-Compiler-Toolkette verpackt. Ich verwende es, um Clang (C++), Binutils und GDB für Windows zu kompilieren. Folgen Sie dem Download-Link unter ellcc.org für vorkompilierte Binärdateien für mehrere Linux-Hosts.

5

Von: https://fedoraproject.org/wiki/MinGW/Tutorial

Ab Fedora 17 können problemlos Binärdateien für die Ziele win32 und win64 erstellt (kompiliert) werden. Dies wird mit der Toolchain mingw-w64 realisiert: http://mingw-w64.sf.net/ . Mit dieser Toolchain können Sie Binärdateien für die folgenden Programmiersprachen erstellen: C, C++, Objective-C, Objective-C++ und Fortran.

"Tipps und Tricks zur Verwendung des Windows-Cross-Compilers": https://fedoraproject.org/wiki/MinGW/Tips

4
iljau

für Fedora ist es

Sudo yum groupinstall -y "MinGW cross-compiler"
1
scavenger