Wie programmiere ich für Windows in Ubuntu?

24

Gibt es eine Möglichkeit, Windows-Konsolenanwendungen (C ++ oder C #) in Ubuntus IDE (z. B. Anjuta) zu erstellen und für Windows zu kompilieren?

Behzadsh
quelle
1
Mingw ist die offensichtliche Wahl für das Cross-Compilieren, aber ich habe keine Ahnung, wie ich es in Anjunta integrieren soll. Ich habe hier ein Tutorial zur Integration von mingw und kdevelop gesehen: forums.gentoo.org/viewtopic-t-292180.html Vielleicht weiß einer der Leute, die mingw empfehlen, von einer Integration mit dem Anjunta-Tutorial?
RobotHumans

Antworten:

21

Sie möchten Cross-Compiling durchführen. Dies ist eine Möglichkeit, Code für andere Plattformen als die von Ihnen verwendeten zu kompilieren, insbesondere wenn der Prozessor völlig anders ist. Grundsätzlich müssen Sie alle Header für Ihr Ziel (z. B. Windows) installieren und dann dem Compiler mitteilen, dass es sich um ein Cross-Compiler handelt, damit einige Systemprüfungen nicht durchgeführt werden und stattdessen auf nicht standardmäßige Verzeichnisse verwiesen wird.

Abhängig von der Sprache kann es nützlich sein, eine Suche oder eine bestimmte Frage durchzuführen, oder wenn Sie mit Basic C arbeiten, können Sie MinGW- Tools und die gleichen Linux-basierten Kompilierungs-Tools verwenden, die gcc verwenden:

sudo apt-get install gcc-mingw32

Es gibt eine gute Anleitung zum Kompilieren von qt / win32 mit MinGW-Tools .

Martin Owens -doctormo-
quelle
12

Sie sollten sich MingW ansehen . Es bietet einen GCC-kompatiblen Compiler für Windows.

Es gibt eine plattformübergreifende Version, die Sie unter Linux verwenden können, um Windows-Binärdateien zu generieren. Sie können es mit synaptic installieren oder indem Sie Folgendes ausführen:

sudo apt-get install gcc-mingw32

Basierend darauf und mit dem üblichen Befehl 'make' können Sie Programme für Windows erstellen.

Dann kann jede IDE, die make und gcc erlaubt, diesen Compiler verwenden. Hier sehen Sie zum Beispiel, wie das in der Code :: Blocks-IDE gemacht wird .

Kleiner Jawa
quelle
Gut genug für mich +1
RobotHumans
7

Die anderen Antworten sind für C / C ++ - Code korrekt. Sie benötigen einen Cross-Compiler.

Für C # -Code können Sie einfach Monodevelop verwenden Installieren Sie Monodevelop , da der Compiler von Mono denselben Typ von Bytecode und dasselbe ausführbare Format wie der .NET-Compiler erzeugt (und umgekehrt). Apps, die Sie mit Mono erstellen, können auf Windows-Computern unverändert ausgeführt werden, solange Sie in den standardmäßigen .NET-Basisklassenbibliotheken bleiben oder eine zusätzliche Bibliothek bündeln, die Sie mit Ihrer App verwenden.

RAOF
quelle
5

Vielleicht möchten Sie Qt mit Qt Creator ausprobieren. Großartiges Framework für GUI- und Konsolenanwendungen, das Sie für Windows, Linux und OS X kompilieren können.

http://qt.nokia.com/

SiliconChaos
quelle
2

Die gebräuchlichste Art, Windows Application Linux (Ubuntu) zu programmieren, ist die Verwendung der mingw-Tools:

http://www.mingw.org/

Es gibt Ubuntu-Pakete für mingw, die zur Installation bereit sind.

Scherz
quelle
2

Von dieser Seite :

sudo apt-get install wine mingw32 mingw32-binutils mingw32-runtime

Dies ist alles, was für die grundlegende Cross-Kompilierung benötigt wird. Lass es uns versuchen:

#include <windows.h>

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
{
  MessageBox(NULL,
    "Cette fenêtre prouve que le cross-compilateur est fonctionnel !",
    "Hello World", MB_OK);
  return 0;
}

Kompilieren Sie dies mit:

i586-mingw32msvc-g++ -o essai.exe essai.cpp

Zum Ausführen benötigen Sie die mingw-Bibliothek: mingwm10.dll:

gunzip -c /usr/share/doc/mingw32-runtime/mingwm10.dll.gz > mingwm10.dll

Dann können Sie es starten:

wine essai.exe

Der Text des Dialogfelds ist in französischer Sprache und mit einem Akzent versehen. Um dies mit gvim zu tun, konvertieren Sie die Quelle in die Windows-Codepage 1252 :<ESC>:e ++enc=cp1252

Eine andere, leistungsstärkere Lösung ist die Verwendung von UTF-8, für die jedoch die Art und Weise geändert werden muss, in der Zeichenfolgen behandelt werden.

Aubin
quelle