2010-12-22 20 views
1

Ich habe eine Socket-Bibliothek für C++ verwendet. Einige andere Informationen: 32 Bit Linux, Codelite und GCC Toolset. Ich möchte mein Programm für Windows mit der Windows-Edition von Codelite kompilieren können. Die Socket-Bibliothek, die ich verwendet habe, hat keinen mingw32-Build der Bibliothek, aber es ist Open Source. Wie kann ich also ein mingw32-Build der Socket-Bibliothek erstellen, damit ich mit der bereitgestellten Quelle ein Windows-Build erstellen kann?Linux-Bibliothek für Mingw kompilieren

Antwort

0

Sie portieren es auf die neue Plattform. :)

Sie haben Glück, dass es opensource ist, denn dann wäre es praktisch unmöglich, es zu portieren (Sie müssten $$$ zahlen, um eine Kopie des Codes für eine bestimmte Lizenz zu erhalten, oder das gesamte Produkt neu schreiben).

Genießen.

Alternativ können sie auch einen Port haben ... Überprüfen Sie die Dokumentation für die Bibliothek, die Sie verwenden.

+0

Ich habe die Bibliothek Dokumente überprüft und sie haben nichts für mingw32. Wie kann ich über die Bibliothek "portieren", welche Schritte muss ich unternehmen? – TheFuzz

+1

@TheFuzz sehen Sie sich den Quellcode an. Ändern Sie alles, was für Ihre Plattform spezifisch ist. Senden Sie einen Patch an die Bibliotheksbetreuer. –

0

Zunächst müssen Sie sicherstellen, dass Sie keine Linux-spezifischen Bibliotheken enthalten.

1

Die meisten Open-Source-Linux-Bibliotheken sind mit dem make-Build-System gebaut (obwohl dort andere Marmelade usw., und benutzerdefinierte Skripte für den Bau). MinGW kommt mit dem make-Dienstprogramm, es ist mingw32-make.exe. Es ist möglich (wenn Sie Glück haben), Ihre Bibliothek einfach neu zu erstellen, indem Sie sie unter Windows erstellen.

Das üblichere Szenario ist, dass Sie das Projekt konfigurieren müssen, bevor Sie es jedoch erstellen können. Die Windows-Shell unterstützt die zum Konfigurieren erforderlichen Skriptanforderungen nicht, aber es gibt einen anderen Teil des MinGW-Projekts, der MSYS heißt. Wenn Sie msys und alle erforderlichen Tools installieren, die Sie dafür benötigen, können Sie Ihr Projekt vor der Ausführung von make konfigurieren.

Natürlich funktioniert das Obige nur, wenn die Bibliothek portabel geschrieben ist. Es gibt einige Unterschiede zwischen der Linux-Socket-Implementierung (sys/socket.h) und der Windows-Implementierung (winsock2.h). Möglicherweise müssen Sie Teile des Codes bearbeiten, um sicherzustellen, dass er für die Plattform korrekt versioniert ist (oder dass alle erforderlichen Abhängigkeiten auch für Windows erstellt wurden).

Es besteht auch die Möglichkeit, dass die Bibliothek möglicherweise bereits für Windows erstellt wird, aber einen anderen Compiler wie MSVC verwendet, der .lib- und .dll-Dateien erstellt. Mingw benötigt .a-Dateien für Bibliotheken, aber eine clevere Funktion ist die direkte Verknüpfung mit einer .dll-Datei, ohne dass eine Import-Bibliothek benötigt wird. Daher können Sie häufig eine vorhandene Windows-Bibliothek verwenden, die nicht gegen Mingw erstellt wurde helfe nicht für statische Verknüpfungen. Es gibt auch ein Werkzeug, dlltool, das .lib in .a konvertieren kann.

Wenn Sie Details zu der spezifischen Bibliothek angeben, mit der Sie arbeiten, kann ich möglicherweise herausfinden, was Sie tun müssen, um es auf Win auszuführen.