2016-05-30 20 views
1

Gibt es eine Möglichkeit, die generierte .exe-Datei von MSYS2 gcc statisch zu verknüpfen? Ich habe viele Möglichkeiten ausprobiert, aber keiner von ihnen hat funktioniert. Alle generierten EXE-Dateien erfordern msys-2.0.dll, die ich loswerden möchte. Bisher habe ich versucht, die Option -ststic Option -static-libgcc zu aktivieren und diese Optionen an -Wl weiterzuleiten, aber keiner von ihnen funktioniert. Ich habe versucht, die Binärdatei zu entfernen, ohne Unterschied, aber die Größe der Ausgabedatei. Ich weiß, dass ich dies in MSYS1.0 gcc oder mingw-w64 von Linux tun kann, aber ich kann dies in MSYS2.0 nicht tun. Nach dem Ausführen von gcc -v wird angezeigt, dass die Werkzeugkette tatsächlich mit --enable-static sowie --enable-shared und --enable-shared-libgcc kompiliert wurde. Gibt es überhaupt eine statische libgcc-Bibliothek?MSYS2 statisch Link Ausgang binär

Antwort

2

Nun, ich habe es gelöst. Aus den MSYS2-Dokumenten geht hervor, dass MSYS2 dafür ausgelegt ist, die DLL-Hölle und Bugs zu mildern, indem eine gemeinsame, gemeinsame libc verwendet wird. Daher ist es nicht vorgesehen, statisch verknüpfte ausführbare Dateien zu erstellen.

Sie können jedoch mingw-w64-Paket von Pacman installieren und mingw64.exe ausführen, um die Shell anstelle von msys2.exe zu starten. Auf diese Weise können Sie die originale mingw-w64-Compiler-Suite von bash installieren und ausführen, anstatt der MSYS2-Version.

Die vom ursprünglichen mingw-w64-Paket generierte ausführbare Datei ist statisch verknüpft. Anstatt msys-2.0.dll zu benötigen, benötigt es ubiquitär verfügbare msvcrt.dll.