Kaip Sumažinti Exe Dydį

Turinys:

Kaip Sumažinti Exe Dydį
Kaip Sumažinti Exe Dydį

Video: Kaip Sumažinti Exe Dydį

Video: Kaip Sumažinti Exe Dydį
Video: Как запустить EXE файл, если Windows его не запускает 2024, Gegužė
Anonim

Anksčiau nedidelis RAM ir ilgalaikio kaupimo įrenginių kiekis asmeniniuose kompiuteriuose nustatė labai griežtus programų dydžio apribojimus. Šios problemos šiandien nėra. Tačiau net ir dabar kartais svarbu kuo labiau sumažinti sukurtos programos exe modulio dydį.

Kaip sumažinti exe dydį
Kaip sumažinti exe dydį

Būtinas

  • - šaltinis;
  • - kompiliatorius, nuorodininkas;
  • - PE modulių kompresoriai, tokie kaip UPX, Themida.

Nurodymai

1 žingsnis

Sukurkite programos vykdomojo leidimo versiją. Pasirinkite tinkamą konfigūraciją projekto nustatymuose IDE. Jei tokios konfigūracijos nėra, sukurkite ją pagal esamą. Pakeiskite susiejimo parinkčių sąrašą pašalindami ir pridėdami atitinkamas direktyvas. Taigi, naudodami „Microsoft“kūrimo paketą, turėtumėte pašalinti / debug parinktį. Taip pat prie šaltinio kodo galite pridėti šią direktyvą: #pragma comment (linker, "/ RELEASE")

2 žingsnis

Konfigūruokite projektą, kad vykdomasis failas nebūtų kuo labiau susietas su statinėmis bibliotekomis. Naudokite bendrinamas atitinkamų bibliotekų versijas. Pvz., Galite išskirti C ir C ++ vykdymo laiko bibliotekų kodą, pakeisdami susiejimo parinktį / ML arba / MT (statinės vieno ir kelių sričių bibliotekos) su / MD (kelių sričių CRT DLL).

3 žingsnis

Apsvarstykite galimybę sujungti skirtingus „exe“modulio skyrius į vieną. Šis metodas neduos pastebimo rezultato, jei failas yra pakankamai didelis, tačiau esant pradiniam modulio dydžiui 20–30 kilobaitų, padidėjimas gali būti reikšmingas. Parinktis / sulieti nuorodą leidžia sujungti skyrius. Ją galite nustatyti naudodami projekto parametrus: / merge:.text =.data /merge:.reloc=.data /merge:.rdata=.data arba naudodami pragmos direktyvas šaltinio kode: #pragma comment (linker, "/ sujungti:.text =.data ") # pragmos komentaras (susiejiklis," /merge:.reloc=.data")#pragma komentaras (susiejiklis, "/merge:.rdata=.data")#pragma komentaras (nuorodos" / Merge:.idata =.data ") Taip pat prasminga apibrėžti gauto skyriaus atributus: #pragma comment (linker," /section:.data, rwe ")

4 žingsnis

Sumažinkite exe dydį nustatydami mažiausią blokų dydžio vertę palei ribas, kurių sekcijos yra išlygintos. Naudokite parinktį / filealign linker, nurodytą redaguojant projekto ypatybes arba pragmos direktyvą: #pragma comment (linker, "/ filealign: 0x200") Šis metodas tinka mažiems moduliams.

5 žingsnis

Pabandykite sumažinti exe failo dydį sukurdami jį naudodami optimizavimo galimybes, kad sumažintumėte kompiuterio kodo kiekį. Pakeiskite kompiliatoriaus / O2 arba / Od parinktis / O1.

6 žingsnis

Pakeiskite standartinį „exe“modulio DOS kištuką į savo, kurio dydis bus minimalus. Naudokite parinktį / stub linker: #pragma comment (linker, "/stub:mystub.exe")Here mystub.exe yra DOS vykdomojo failo, kuris bus pridėtas prie exe modulio kaip šaknis, pavadinimas.

7 žingsnis

Apsvarstykite galimybę nurodyti savo įėjimo į programą tašką. Tai pašalins statinių vykdymo laiko bibliotekų inicializavimo kodą. Naudokite parinktį / entry linker, pavyzdžiui: #pragma comment (linker, "/ entry: MyStartup") void MyStartup () {:: MessageBox (NULL, "Hello!", "Message!", MB_OK);}

8 žingsnis

Paruoštame exe faile pritaikykite tokias pakavimo paslaugas kaip UPX, ASPack, Themida, PECompact. Modulio duomenys bus suglaudinti. Paleidus programą, jie bus išpakuoti į atmintį. Šis metodas suteikia gerų rezultatų dideliems exe failams, kuriuose yra daug statinių duomenų su maža entropija (pvz., DIB rastrai išteklių skyriuje).

Rekomenduojamas: