Windows und Linux sind zwei sehr unterschiedliche Systeme, und daher ist es oft nicht einfach, Programme, die für das andere geschrieben wurden, zu portieren, besonders wenn es um GUI-Programme geht. Obwohl es viele verschiedene plattformübergreifende Bibliotheken und SDKs gibt, sind native Programme, die ohne Portabilität geschrieben werden, ziemlich schwer portierbar.

Wenn es darum geht, Programme, die für Linux unter Windows geschrieben wurden, zu kompilieren und auszuführen, gibt es eine Lösung, die als Cygwin bekannt ist. Das Cygwin-Projekt ist eine Sammlung der gebräuchlichsten Tools und Compiler (einschließlich der Bash-Shell und der GNU-Compiler-Kette) für Windows. Es enthält auch eine Bibliothek, die eine Kompatibilitätsschicht bereitstellt, so dass Programme, die Linux-spezifische APIs aufrufen, kompiliert werden können. Cygwin ist kein Emulator oder eine virtuelle Maschine, und Linux-Binärdateien können nicht unter Windows ausgeführt werden, ohne zuvor neu kompiliert zu werden.

Besuchen Sie die Cygwin-Installationsseite und laden Sie die 32-Bit- oder 64-Bit-Setup-Programmdatei herunter (je nachdem, welche Windows-Variante Sie verwenden). Führen Sie das Setup-Programm aus. Klicken Sie erneut auf Weiter und Weiter ("Von Internet installieren"). Das Standardverzeichnis ist "C: \ cygwin". Es kann bei Bedarf geändert werden, aber wenn Sie nicht einen bestimmten Grund haben, es zu ändern, ist der Standardwert am besten. Klicken Sie erneut auf Weiter, Weiter und Weiter.

Das Cygwin-Projekt hat Spiegel-Sites auf der ganzen Welt; Wählen Sie einen aus, von dem Sie glauben, dass er Ihrem Standort am besten dient, und klicken Sie auf Weiter. Sie müssen nun auswählen, welche Pakete installiert werden sollen. Um einfache Linux-Programme in Windows zu kompilieren, benötigen Sie die GNU Compiler Chain (GCC), die einen C- und C ++ - Compiler zur Verfügung stellt.

Geben Sie "gcc" in das Suchfeld ein und klicken Sie dann in das kleine Pluszeichen neben "Devel" in der Liste der Pakete. Suchen Sie nach "gcc-core" und "gcc-g ++" und klicken Sie auf "Überspringen". Das Wort "Überspringen" ändert sich in eine Versionsnummer und das "n / a" -Zeichen in der Spalte "Bin?" Wird zu einem aktivierten Kästchen. Geben Sie "make" in das Suchfeld ein und suchen Sie nach "make" unter "Devel". Klicken Sie auf "Skip", um es zur Installation zu markieren. Suchen Sie nach "wget" und markieren Sie es zur Installation über "Web". Um das folgende Beispiel zu erstellen, benötigen wir auch "libiconv;", suchen Sie danach und markieren Sie es zur Installation.

Weiter klicken. Das Installationsprogramm wird dann sehen, welche anderen Pakete installiert werden müssen, um Abhängigkeiten aufzulösen. Klicken Sie auf Weiter, um die Empfehlungen zu akzeptieren.

Nachdem alle Pakete heruntergeladen und installiert wurden, folgen Sie den letzten Schritten, bis das Installationsprogramm beendet wird. Starten Sie das "Cygwin Terminal", um in die Linux-ähnliche Entwicklungsumgebung zu gelangen. Im Terminal benutzt man keine Windows Kommandos wie "dir" sondern Shell Kommandos wie "ls".

Um zu demonstrieren, wie man ein Linux-Programm unter Windows kompiliert, verwenden wir das HTML-XML-Paket aus dem W3. Einen Überblick über die Möglichkeiten finden Sie unter Bearbeiten von HTML- und XML-Dateien über die Befehlszeile.

Laden Sie die Quelldateien mit "wget" herunter:

 wget http://www.w3.org/Tools/HTML-XML-utils/html-xml-utils-6.7.tar.gz 

Entpacken Sie nun die Archivdatei:

 tar -zxf html-xml-utils-6.7.tar.gz 

Die Quelldateien befinden sich jetzt im Verzeichnis "html-xml-utils-6.7". Gib dieses Verzeichnis ein:

 CD html-xml-utils-6.7 

Bevor die Dateien erstellt werden können, müssen Sie das Shell-Skript "configure" ausführen, um das Makefile (die Build-Anweisungen) zu generieren, die für diese Build-Umgebung geeignet sind. Dies ist ein häufiger Schritt unter Linux (und Cygwin) beim Erstellen von Paketen aus der Quelle.

 ./konfigurieren 

Sobald "configure" fertig ist, können Sie den Build mit "make" starten:

 machen 

Der Build wird teilweise fehlschlagen. Ich wusste nicht, was ich als nächstes tun sollte. Entweder könnte ich zu einem anderen Projekt wechseln und das von seiner Quelle aus aufbauen oder mit den HTML-XML-Utils kämpfen. Ich habe mich für Letzteres entschieden, da es zeigt, dass nicht alles ein "Walk-in-the-Park" sein wird, wenn man versucht, Linux-Programme unter Cygwin zu kompilieren. Die Lösung für dieses spezielle Problem ist einfach. Die Fehlermeldung zeigt, dass der Linker die Bibliothek "iconv" nicht finden kann. Ein kurzer Blick auf den Link-Befehl zeigt, dass die Bibliothek nicht angegeben ist. Die schnelle und schmutzige Lösung besteht darin, den Befehl manuell auszuführen und dem Linker mitzuteilen, libconv zu verwenden. Der "richtige" Weg, dies zu beheben, wäre, sich mit dem Makefile usw. zu befassen, um herauszufinden, warum es nicht funktioniert.

Führen Sie den folgenden Befehl aus, und notieren Sie die Einfügung von "-liconv" am Ende:

 gcc -g -O2 -o hxindex.exe hxindex.o scan.o html.o openurl.o url.o heap.o class.o errexit.o connectionsock.o types.o tree.o genid.o dtd.o-Header .o dict.o fopencookie.o -liconv 

Sobald die Datei "hxindex.exe" erstellt wurde, können Sie mit dem Rest des Builds fortfahren, indem Sie erneut "make" eingeben. Die Art und Weise wie "make" funktioniert, überprüft, was erstellt wurde und was nicht, und setzt dann den Build-Prozess an der entsprechenden Stelle fort. Da wir "hxindex.exe" manuell erstellt haben, macht "make" einfach weiter mit der nächsten Binärdatei in ihrer Liste.

Wenn "make" abgeschlossen ist, haben Sie alle .exe-Dateien im Verzeichnis html-xml-utils-6.7.

Wenn Sie mit Cygwin nicht weiterkommen, sollten Sie sich die FAQ und die Dokumentation ansehen. Ansonsten hat das Projekt eine Reihe von Mailing-Listen. Wenn Sie Probleme mit den oben beschriebenen Schritten haben, verwenden Sie bitte den Kommentarbereich unten.