Nelielais RAM un ilgtermiņa glabāšanas ierīču daudzums personālajos datoros iepriekš uzlika ļoti stingrus ierobežojumus programmu lielumam. Šī problēma šodien nepastāv. Tomēr pat tagad dažreiz ir svarīgi pēc iespējas samazināt izstrādātās lietojumprogrammas exe moduļa lielumu.
Nepieciešams
- - avots;
- - sastādītājs, linkeris;
- - PE moduļu kompresori, piemēram, UPX, Themida.
Instrukcijas
1. solis
Veidojiet izpildāmās lietojumprogrammas laidiena versiju. IDE projekta iestatījumos atlasiet atbilstošo konfigurāciju. Ja šādas konfigurācijas nav, izveidojiet to, pamatojoties uz esošo. Mainiet saistītāju opciju sarakstu, noņemot un pievienojot atbilstošās direktīvas. Tātad, lietojot Microsoft izstrādes paketi, jums vajadzētu noņemt opciju / debug. Avota kodam varat pievienot arī šādu direktīvu: #pragma comment (linker, "/ RELEASE")
2. solis
Konfigurējiet projektu, lai pēc iespējas vairāk nesaistītu izpildāmo failu ar statiskām bibliotēkām. Izmantojiet attiecīgo bibliotēku koplietotās versijas. Piemēram, jūs varat izslēgt izpildlaika C un C ++ bibliotēkas kodu, aizstājot saistītāja opciju / ML vai / MT (statiskas viena un vairāku pavedienu bibliotēkas) ar / MD (vairāku pavedienu CRT DLL).
3. solis
Apsveriet dažādu exe moduļa sadaļu apvienošanu vienā. Šī metode nedos pamanāmu rezultātu, ja fails būs pietiekami liels, taču ar sākotnējo moduļa izmēru 20–30 kilobaiti palielinājums var būt ievērojams. Opcija / apvienot saiti ļauj sapludināt sadaļas. To var iestatīt, izmantojot projekta parametrus: / sapludināšana:.text =.data /merge:.reloc=.data /merge:.rdata=.data vai avota kodā izmantojot pragmas direktīvas: #pragma comment (linker, "/ sapludināt:.text =.data ") # pragmas komentārs (linker," /merge:.reloc=.data")#pragma komentārs (linker, "/merge:.rdata=.data")#pragma komentārs (linker" / sapludināšana:.idata =.data ") Ir jēga definēt arī iegūtās sadaļas atribūtus: #pragma comment (linker," /section:.data, rwe ")
4. solis
Samaziniet exe lielumu, nosakot minimālo bloku lieluma vērtību, pa kuras robežām ir izlīdzinātas sekcijas. Izmantojiet opciju / filealign linker, kas norādīta, rediģējot projekta rekvizītus vai pragmas direktīvu: #pragma comment (linker, "/ filealign: 0x200") Šī metode ir piemērota maziem moduļiem.
5. solis
Mēģiniet samazināt exe faila lielumu, izveidojot to ar optimizācijas iespējām, lai samazinātu mašīnkodu daudzumu. Nomainiet kompilatora opcijas / O2 vai / Od ar / O1.
6. solis
Nomainiet standarta DOS spraudni exe modulī ar savu, kuram būs minimālais izmērs. Izmantojiet opciju / stub linker: #pragma comment (linker, "/stub:mystub.exe") Šeit mystub.exe ir DOS izpildāmā faila nosaukums, kas tiks pievienots exe modulim kā spraudnis.
7. solis
Apsveriet iespēju norādīt savu pieteikšanās punktu. Tas novērsīs statisko izpildlaika bibliotēku inicializācijas kodu. Izmantojiet opciju / entry linker, piemēram: #pragma comment (linker, "/ entry: MyStartup") void MyStartup () {:: MessageBox (NULL, "Hello!", "Message!", MB_OK);}
8. solis
Gatavā exe failā lietojiet tādas iepakojuma utilītprogrammas kā UPX, ASPack, Themida, PECompact. Moduļa dati tiks saspiesti. Pēc lietojumprogrammas palaišanas tie tiks izpakoti atmiņā. Šī metode dod labus rezultātus lieliem exe failiem, kas satur lielu daudzumu statisko datu ar zemu entropiju (piemēram, DIB rasteri resursu sadaļā).