Hur Man Minskar Storleken På En Exe

Innehållsförteckning:

Hur Man Minskar Storleken På En Exe
Hur Man Minskar Storleken På En Exe

Video: Hur Man Minskar Storleken På En Exe

Video: Hur Man Minskar Storleken På En Exe
Video: Новый СУСАНО Саске ◉ Наследие Клана УЧИХА в Боруто 2024, Maj
Anonim

Den lilla mängden RAM och långvariga lagringsenheter på persondatorer införde mycket stränga begränsningar för programmens storlek. Detta problem finns inte idag. Men även nu är det ibland viktigt att minimera storleken på exe-modulen för den utvecklade applikationen så mycket som möjligt.

Hur man minskar storleken på en exe
Hur man minskar storleken på en exe

Nödvändig

  • - källa;
  • - kompilator, länkare;
  • - kompressorer av PE-moduler, såsom UPX, Themida.

Instruktioner

Steg 1

Bygg releaseversionen av applikationens körbar. Välj lämplig konfiguration i projektinställningarna i IDE. Om det inte finns någon sådan konfiguration, skapa den baserat på den befintliga. Ändra listan över länkalternativ genom att ta bort och lägga till lämpliga direktiv. Så när du använder ett utvecklingspaket från Microsoft bör du ta bort alternativet / debug. Du kan också lägga till följande direktiv i källkoden: #pragma comment (linker, "/ RELEASE")

Steg 2

Konfigurera projektet för att undvika att länka den körbara filen till statiska bibliotek så mycket som möjligt. Använd delade versioner av respektive bibliotek. Du kan till exempel utesluta koden för C- och C ++ runtime-biblioteken genom att ersätta länkalternativet / ML eller / MT (statiska en- och flertrådsbibliotek) med / MD (CRT-DLL med flera trådar).

Steg 3

Överväg att slå samman olika delar av exe-modulen till en. Denna metod ger inte ett märkbart resultat om filen är tillräckligt stor, men med den ursprungliga modulstorleken på 20-30 kilobyte kan förstärkningen vara betydande. Alternativet / merge linker låter dig slå samman avsnitt. Du kan ställa in det genom projektparametrarna: / merge:.text =.data /merge:.reloc=.data /merge:.rdata=.data eller använda pragmadirektiv i källkoden: #pragma comment (linker, "/ slå samman:.text =.data ") # pragma comment (linker," /merge:.reloc=.data")#pragma comment (linker, "/merge:.rdata=.data")#pragma comment (linker," / merge:.idata =.data ") Det är också meningsfullt att definiera attributen för det resulterande avsnittet: #pragma comment (linker," /section:.data, rwe ")

Steg 4

Minska exe-storleken genom att ställa in minimivärdet för blockens storlek längs gränserna för vilka sektionerna är inriktade. Använd alternativet / filealign linker som anges genom att redigera projektegenskaperna eller pragmadirektivet: #pragma comment (linker, "/ filealign: 0x200") Denna metod är lämplig för små moduler.

Steg 5

Försök att minska storleken på exe-filen genom att bygga den med optimeringsalternativ för att minska mängden maskinkod. Ersätt kompileringsalternativen / O2 eller / Od med / O1.

Steg 6

Byt ut standard DOS-stubben i exe-modulen mot din egen, som har minsta storlek. Använd alternativet / stub linker: #pragma comment (linker, "/stub:mystub.exe")Här är mystub.exe namnet på den DOS-körbara filen som läggs till i exe-modulen som en stub.

Steg 7

Överväg att ange din egen startpunkt för applikationen. Detta eliminerar initialiseringskoden för de statiska runtime-biblioteken. Använd alternativet / entry linker, till exempel: #pragma comment (linker, "/ entry: MyStartup") ogiltig MyStartup () {:: MessageBox (NULL, "Hello!", "Message!", MB_OK);}

Steg 8

Applicera förpackningsverktyg som UPX, ASPack, Themida, PECompact till den färdiga exe-filen. Moduldata komprimeras. De kommer att packas upp i minnet efter att programmet har startats. Denna metod ger bra resultat för stora exe-filer som innehåller en stor mängd statisk data med låg entropi (till exempel DIB-raster i resursavsnittet).

Rekommenderad: