Linux

So kompilieren Sie Linux-Programme unter Windows mit Cygwin

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

Wenn es um das Kompilieren und Ausführen von Programmen geht, die für Linux unter Windows geschrieben wurden, gibt es eine Lösung namens Cygwin. Das Cygwin-Projekt ist eine Sammlung der gängigsten Tools und Compiler (einschließlich der Bash-Shell und der GNU-Compilerkette) für Windows. Es enthält auch eine Bibliothek, die eine Kompatibilitätsschicht bereitstellt, damit Programme kompiliert werden können, die Linux-spezifische APIs aufrufen. Cygwin ist kein Emulator oder virtuelle Maschine, und es lässt keine Linux-Binärdateien unter Windows laufen, ohne vorher neu kompiliert zu werden.

Besuche den Cygwin-Installationsseite

instagram story viewer
und laden Sie die ausführbare 32-Bit- oder 64-Bit-Setup-Datei herunter (je nachdem, welche Windows-Variante Sie verwenden). Führen Sie das Setup-Programm aus. Klicken Sie auf Weiter und erneut auf Weiter (zu „Aus dem Internet installieren“). Das Standardverzeichnis ist „C:\cygwin“. Es kann bei Bedarf geändert werden, aber es sei denn, Sie haben einen bestimmten Grund, es zu ändern, ist die Standardeinstellung am besten. Klicken Sie auf Weiter, Weiter und erneut auf Weiter.

Das Cygwin-Projekt verfügt über Mirror-Sites auf der ganzen Welt; Wählen Sie eine aus, die Ihrer Meinung nach am besten zu Ihrem Standort passt, und klicken Sie auf Weiter. Sie müssen nun auswählen, welche Pakete installiert werden sollen. Um einfache Linux-Programme unter Windows zu kompilieren, benötigen Sie die GNU Compiler Chain (GCC), die einen C- und C++-Compiler bereitstellt.

cygwin-select-pakete

Geben Sie „gcc“ in das Suchfeld ein und klicken Sie dann in der Paketliste auf das kleine Pluszeichen neben „Devel“. Suchen Sie nach „gcc-core“ und „gcc-g++“ und klicken Sie jeweils auf „Überspringen“. Das Wort „Skip“ ändert sich in eine Versionsnummer und das „n/a“-Zeichen im „Bin? Spalte wird zu einem aktivierten Kontrollkästchen. Geben Sie „make“ in das Suchfeld ein und suchen Sie „make“ unter „Devel“. Klicken Sie auf „Überspringen“, um es für die Installation zu markieren. Suchen Sie nach „wget“ und markieren Sie es auch für die Installation von „Web“. Um das folgende Beispiel zu erstellen, benötigen wir außerdem „libiconv;“ Suchen Sie danach und markieren Sie es für die Installation.

cygwin-gcc-Auswahl

Weiter klicken. Das Installationsprogramm sieht dann, 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, befolgen Sie die letzten Schritte, bis das Installationsprogramm beendet wird. Starten Sie das „Cygwin Terminal“, um in die Linux-ähnliche Entwicklungsumgebung zu gelangen. Im Terminal verwendet man keine Windows-Befehle wie „dir“, sondern Shell-Befehle wie „ls“.

Um zu demonstrieren, wie man ein Linux-Programm unter Windows kompiliert, verwenden wir das HTML-XML-Paket aus dem W3. Um zu sehen, was es kann, siehe So manipulieren Sie HTML- und XML-Dateien über die Befehlszeile.

Laden Sie die Quelldateien mit „wget“ herunter:

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

Entpacken Sie nun die Archivdatei:

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

Die Quelldateien befinden sich nun im Verzeichnis „html-xml-utils-6.7“. Geben Sie 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, das für diese Build-Umgebung geeignet ist. Dies ist ein üblicher Schritt unter Linux (und Cygwin), wenn Pakete aus dem Quellcode erstellt werden.

./konfigurieren
cygwin-configure-html-utils

Nachdem „configure“ abgeschlossen ist, können Sie den Build mit „make“ starten:

machen

Der Build wird auf halbem Weg fehlschlagen. Ich war unschlüssig, was ich als nächstes tun sollte. Entweder könnte ich zu einem anderen Projekt wechseln und dieses aus seiner Quelle erstellen oder mit den HTML-XML-Utilitys weiterkämpfen. Ich habe mich für letzteres entschieden, da es zeigt, dass beim Versuch, Linux-Programme unter Cygwin zu kompilieren, nicht alles ein Kinderspiel sein wird. Die Lösung für dieses spezielle Problem ist einfach. Die Fehlermeldung zeigt an, 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 den Linker anzuweisen, libconv zu verwenden. Der „richtige“ Weg, dies zu beheben, besteht darin, sich mit dem Makefile usw. um herauszufinden, warum es nicht funktioniert.

Cygwin-Build schlägt fehl

Führen Sie den folgenden Befehl aus und beachten Sie die Einfügung von „-liconv“ am Ende:

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

Sobald die Datei „hxindex.exe“ erstellt wurde, können Sie mit dem Rest des Builds fortfahren, indem Sie erneut „make“ eingeben. „make“ funktioniert so, dass es überprüft, was gebaut wurde und was nicht, und dann den Build-Prozess an der entsprechenden Stelle fortsetzt. Da wir „hxindex.exe“ manuell erstellt haben, macht „make“ einfach mit der nächsten Binärdatei in seiner Liste weiter.

Wenn „make“ abgeschlossen ist, befinden sich alle .exe-Dateien im Verzeichnis html-xml-utils-6.7.

Wenn Sie mit Cygwin nicht weiterkommen, sollten Sie sich die FAQ, und bei der Dokumentation. Andernfalls hat das Projekt eine Reihe von Mailinglisten. Wenn Sie Probleme mit den oben beschriebenen Schritten haben, verwenden Sie bitte den Kommentarbereich unten.

Offenlegung von Partnern: Make Tech Easier kann Provisionen für Produkte verdienen, die über unsere Links gekauft wurden, was die Arbeit unterstützt, die wir für unsere Leser leisten.

insta viewer
Teachs.ru