So Reduzieren Sie Die Größe Einer Exe

Inhaltsverzeichnis:

So Reduzieren Sie Die Größe Einer Exe
So Reduzieren Sie Die Größe Einer Exe

Video: So Reduzieren Sie Die Größe Einer Exe

Video: So Reduzieren Sie Die Größe Einer Exe
Video: Reduce big head, shrink your head look smaller u0026 head look beautiful (Korean bone exercises) 2024, November
Anonim

Die geringe Menge an RAM und Langzeitspeichergeräten auf Personalcomputern hat in der Vergangenheit sehr strenge Beschränkungen für die Größe von Programmen auferlegt. Dieses Problem existiert heute nicht. Aber auch jetzt ist es manchmal wichtig, die Größe des Exe-Moduls der entwickelten Anwendung so gering wie möglich zu halten.

So reduzieren Sie die Größe einer exe
So reduzieren Sie die Größe einer exe

Notwendig

  • - Quelle;
  • - Compiler, Linker;
  • - Kompressoren von PE-Modulen wie UPX, Themida.

Anweisungen

Schritt 1

Erstellen Sie die Release-Version der ausführbaren Anwendungsdatei. Wählen Sie in den Projekteinstellungen in der IDE die entsprechende Konfiguration aus. Wenn keine solche Konfiguration vorhanden ist, erstellen Sie sie basierend auf der vorhandenen. Ändern Sie die Liste der Linkeroptionen, indem Sie die entsprechenden Direktiven entfernen und hinzufügen. Wenn Sie also ein Entwicklungspaket von Microsoft verwenden, sollten Sie die Option / debug entfernen. Sie können dem Quellcode auch die folgende Direktive hinzufügen: #pragma comment (linker, "/RELEASE")

Schritt 2

Konfigurieren Sie das Projekt so, dass die ausführbare Datei möglichst nicht mit statischen Bibliotheken verknüpft wird. Verwenden Sie freigegebene Versionen der jeweiligen Bibliotheken. Beispielsweise können Sie den Code der C- und C++-Laufzeitbibliotheken ausschließen, indem Sie die Linker-Option /ML oder /MT (statische Single- und Multithreaded-Bibliotheken) durch /MD (Multithreaded CRT DLL) ersetzen.

Schritt 3

Ziehen Sie in Betracht, verschiedene Abschnitte des exe-Moduls zu einem zusammenzuführen. Diese Methode führt zu keinem erkennbaren Ergebnis, wenn die Datei groß genug ist, aber bei einer anfänglichen Modulgröße von 20 bis 30 Kilobyte kann der Gewinn erheblich sein. Mit der Linker-Option /merge können Sie Abschnitte zusammenführen. Sie können es über die Projektparameter einstellen: /merge:.text =.data /merge:.reloc=.data /merge:.rdata=.data oder mit Pragma-Direktiven im Quellcode: #pragma comment (linker, "/ merge:.text =.data ") # Pragma-Kommentar (Linker," /merge:.reloc=.data")#Pragma-Kommentar (Linker, "/merge:.rdata=.data")#Pragma-Kommentar (Linker," /merge:.idata =.data") Es ist auch sinnvoll, die Attribute des resultierenden Abschnitts zu definieren: #pragma comment (linker," /section:.data, rwe")

Schritt 4

Reduzieren Sie die Größe der exe, indem Sie den Mindestwert der Größe der Blöcke festlegen, an deren Grenzen die Abschnitte ausgerichtet sind. Verwenden Sie die Linker-Option /filealign, die durch Bearbeiten der Projekteigenschaften oder der Pragma-Direktive angegeben wurde: #pragma comment (linker, "/filealign: 0x200") Diese Methode ist für kleine Module geeignet.

Schritt 5

Versuchen Sie, die Größe der exe-Datei zu reduzieren, indem Sie sie mit Optimierungsoptionen erstellen, um die Menge an Maschinencode zu reduzieren. Ersetzen Sie die Compileroptionen /O2 oder /Od durch /O1.

Schritt 6

Ersetzen Sie den Standard-DOS-Stub im exe-Modul durch Ihren eigenen, der die Mindestgröße hat. Verwenden Sie die Linker-Option / stub: #pragma comment (linker, "/stub:mystub.exe")Hier ist mystub.exe der Name der ausführbaren DOS-Datei, die dem exe-Modul als Stub hinzugefügt wird.

Schritt 7

Ziehen Sie in Erwägung, einen eigenen Einstiegspunkt für die Anwendung anzugeben. Dadurch wird der Initialisierungscode der statischen Laufzeitbibliotheken eliminiert. Verwenden Sie die Linker-Option / Eintrag, zum Beispiel: #pragma Kommentar (linker, "/ Eintrag: MyStartup") void MyStartup () {:: MessageBox (NULL, "Hello!", "Message!", MB_OK);}

Schritt 8

Wenden Sie Paketdienstprogramme wie UPX, ASPack, Themida, PECompact auf die fertige exe-Datei an. Die Moduldaten werden komprimiert. Sie werden nach dem Start der Anwendung in den Speicher entpackt. Diese Methode liefert gute Ergebnisse für große exe-Dateien, die eine große Menge an statischen Daten mit geringer Entropie enthalten (z. B. DIB-Raster im Ressourcenabschnitt).

Empfohlen: