Come Ridurre Le Dimensioni Di Un Exe

Sommario:

Come Ridurre Le Dimensioni Di Un Exe
Come Ridurre Le Dimensioni Di Un Exe

Video: Come Ridurre Le Dimensioni Di Un Exe

Video: Come Ridurre Le Dimensioni Di Un Exe
Video: Ridurre le dimensioni di un video senza perdere qualità, con VLC 2024, Maggio
Anonim

La piccola quantità di RAM e dispositivi di archiviazione a lungo termine sui personal computer in passato imponeva restrizioni molto rigide sulla dimensione dei programmi. Questo problema oggi non esiste. Tuttavia, anche ora a volte è importante ridurre il più possibile le dimensioni del modulo exe dell'applicazione sviluppata.

Come ridurre le dimensioni di un exe
Come ridurre le dimensioni di un exe

Necessario

  • - fonte;
  • - compilatore, linker;
  • - compressori di moduli PE, come UPX, Themida.

Istruzioni

Passo 1

Compila la versione di rilascio dell'eseguibile dell'applicazione. Selezionare la configurazione appropriata nelle impostazioni del progetto nell'IDE. Se non esiste tale configurazione, crearla in base a quella esistente. Modificare l'elenco delle opzioni del linker rimuovendo e aggiungendo le direttive appropriate. Quindi, quando si utilizza un pacchetto di sviluppo di Microsoft, è necessario rimuovere l'opzione / debug. Puoi anche aggiungere la seguente direttiva al codice sorgente: #pragma comment (linker, "/RELEASE")

Passo 2

Configurare il progetto per evitare il più possibile di collegare l'eseguibile con librerie statiche. Utilizzare versioni condivise delle rispettive librerie. Ad esempio, è possibile escludere il codice delle librerie di runtime C e C++ sostituendo l'opzione del linker /ML o /MT (librerie statiche a thread singolo e multithread) con /MD (DLL CRT multithread).

Passaggio 3

Prendi in considerazione la possibilità di unire diverse sezioni del modulo exe in una. Questo metodo non darà un risultato evidente se il file è abbastanza grande, ma con la dimensione iniziale del modulo di 20-30 kilobyte, il guadagno può essere significativo. L'opzione / merge linker consente di unire le sezioni. Puoi impostarlo tramite i parametri del progetto: / merge:.text =.data /merge:.reloc=.data /merge:.rdata=.data o usando le direttive pragma nel codice sorgente: #pragma comment (linker, "/ merge:.text =.data ") # commento pragma (linker," /merge:.reloc=.data")#commento pragma (linker, "/merge:.rdata=.data")#commento pragma (linker," / merge:.idata =.data ") Ha anche senso definire gli attributi della sezione risultante: #pragma comment (linker," /section:.data, rwe ")

Passaggio 4

Ridurre la dimensione dell'exe impostando il valore minimo della dimensione dei blocchi lungo i confini dei quali sono allineate le sezioni. Usa l'opzione / filealign linker specificata modificando le proprietà del progetto o la direttiva pragma: #pragma comment (linker, "/ filealign: 0x200") Questo metodo è adatto per piccoli moduli.

Passaggio 5

Prova a ridurre la dimensione del file exe costruendolo con opzioni di ottimizzazione per ridurre la quantità di codice macchina. Sostituisci le opzioni del compilatore /O2 o /Od con /O1.

Passaggio 6

Sostituisci lo stub DOS standard nel modulo exe con il tuo, che avrà la dimensione minima. Usa l'opzione / stub linker: #pragma comment (linker, "/stub:mystub.exe")Qui mystub.exe è il nome del file eseguibile DOS che verrà aggiunto al modulo exe come stub.

Passaggio 7

Considera la possibilità di specificare il tuo punto di ingresso per l'applicazione. Ciò eliminerà il codice di inizializzazione delle librerie di runtime statiche. Usa l'opzione / entry linker, ad esempio: #pragma comment (linker, "/ entry: MyStartup") void MyStartup () {:: MessageBox (NULL, "Hello!", "Message!", MB_OK);}

Passaggio 8

Applicare utility di packaging come UPX, ASPack, Themida, PECompact al file exe finito. I dati del modulo verranno compressi. Verranno decompressi in memoria dopo aver avviato l'applicazione. Questo metodo fornisce buoni risultati per file exe di grandi dimensioni contenenti una grande quantità di dati statici con bassa entropia (ad esempio, raster DIB nella sezione delle risorse).

Consigliato: