Den lille mengden RAM og langvarige lagringsenheter på personlige datamaskiner førte til meget strenge begrensninger på størrelsen på programmene. Dette problemet eksisterer ikke i dag. Men selv nå er det noen ganger viktig å minimere størrelsen på exe-modulen til den utviklede applikasjonen så mye som mulig.
Nødvendig
- - kilde;
- - kompilator, linker;
- - kompressorer av PE-moduler, som UPX, Themida.
Bruksanvisning
Trinn 1
Bygg utgivelsesversjonen av den kjørbare applikasjonen. Velg riktig konfigurasjon i prosjektinnstillingene i IDE. Hvis det ikke er noen slik konfigurasjon, kan du opprette den basert på den eksisterende. Endre listen over koblingsalternativer ved å fjerne og legge til passende direktiver. Så når du bruker en utviklingspakke fra Microsoft, bør du fjerne alternativet / feilsøking. Du kan også legge til følgende direktiv i kildekoden: #pragma comment (linker, "/ RELEASE")
Steg 2
Konfigurer prosjektet for å unngå å koble den kjørbare filen med statiske biblioteker så mye som mulig. Bruk delte versjoner av de respektive bibliotekene. For eksempel kan du ekskludere koden til C- og C ++ kjøretidsbibliotekene ved å erstatte koblingsalternativet / ML eller / MT (statiske enkelt- og flertrådede biblioteker) med / MD (flertrådet CRT DLL).
Trinn 3
Vurder å slå sammen forskjellige deler av exe-modulen til en. Denne metoden vil ikke gi et merkbart resultat hvis filen er stor nok, men med den innledende modulstørrelsen på 20-30 kilobyte, kan gevinsten være betydelig. Alternativet / merge linker lar deg slå sammen seksjoner. Du kan angi det gjennom prosjektparametrene: / merge:.text =.data /merge:.reloc=.data /merge:.rdata=.data eller ved å bruke pragmadirektiv i kildekoden: #pragma comment (linker, "/ flette:.text =.data ") # pragma comment (linker," /merge:.reloc=.data")#pragma comment (linker, "/merge:.rdata=.data")#pragma comment (linker," / merge:.idata =.data ") Det er også fornuftig å definere attributtene til den resulterende seksjonen: #pragma comment (linker," /section:.data, rwe ")
Trinn 4
Reduser størrelsen på exe ved å angi minimumsverdien for størrelsen på blokkene langs grensene som seksjonene er justert med. Bruk alternativet / filealign linker spesifisert ved å redigere prosjektegenskapene eller pragmadirektivet: #pragma comment (linker, "/ filealign: 0x200") Denne metoden er egnet for små moduler.
Trinn 5
Prøv å redusere størrelsen på exe-filen ved å bygge den med optimaliseringsalternativer for å redusere mengden maskinkode. Erstatt kompileringsalternativene / O2 eller / Od med / O1.
Trinn 6
Bytt ut standard DOS-stubben i exe-modulen med din egen, som vil ha den minste størrelsen. Bruk alternativet / stub linker: #pragma comment (linker, "/stub:mystub.exe")Her mystub.exe er navnet på DOS-kjørbare fil som vil bli lagt til exe-modulen som en stub.
Trinn 7
Vurder å spesifisere ditt eget inngangspunkt til applikasjonen. Dette vil eliminere initialiseringskoden til de statiske kjøretidsbibliotekene. Bruk alternativet / entry linker, for eksempel: #pragma comment (linker, "/ entry: MyStartup") ugyldig MyStartup () {:: MessageBox (NULL, "Hello!", "Message!", MB_OK);}
Trinn 8
Bruk emballasjeverktøy som UPX, ASPack, Themida, PECompact til den ferdige exe-filen. Moduldataene komprimeres. De pakkes ut i minnet etter at applikasjonen er startet. Denne metoden gir gode resultater for store exe-filer som inneholder en stor mengde statiske data med lav entropi (for eksempel DIB-raster i ressursseksjonen).