Varem kehtestas personaalarvutites väike RAM-i ja pikaajaliste salvestusseadmete hulk programmide suurusele väga ranged piirangud. Seda probleemi pole tänapäeval olemas. Kuid ka praegu on mõnikord oluline väljatöötatud rakenduse exe-mooduli suurust võimalikult palju minimeerida.

Vajalik
- - allikas;
- - koostaja, linker;
- - PE moodulite kompressorid, näiteks UPX, Themida.
Juhised
Samm 1
Ehitage rakenduse käivitatava versiooni versioon. Valige IDE-s projekti sätetes sobiv konfiguratsioon. Kui sellist konfiguratsiooni pole, looge see olemasoleva põhjal. Linkerite valikute loendi muutmiseks eemaldage ja lisage asjakohased direktiivid. Nii et Microsofti arenduspaketi kasutamisel peaksite eemaldama suvandi / silumine. Lähtekoodile saate lisada ka järgmise direktiivi: #pragma comment (linker, "/ RELEASE")
2. samm
Konfigureerige projekt, et vältida võimalikult palju käivitatava faili linkimist staatiliste teekidega. Kasutage vastavate teekide jagatud versioone. Näiteks võite välistada käitamisraamatukogude C ja C ++ koodi, asendades linkimisvaliku / ML või / MT (staatilised ühe- ja mitmekeermelise teegid) väärtusega / MD (mitmekeermelise CRT DLL).
3. samm
Kaaluge exe mooduli erinevate sektsioonide ühendamist üheks. See meetod ei anna märgatavat tulemust, kui fail on piisavalt suur, kuid kui mooduli esialgne suurus on 20-30 kilobaiti, võib võimendus olla märkimisväärne. Valik / ühenda linker võimaldab teil jaotisi ühendada. Saate selle määrata projekti parameetrite kaudu: / merge:.text =.data /merge:.reloc=.data /merge:.rdata=.data või lähtekoodis pragma-käskude abil: #pragma comment (linker, "/ ühendamine:.text =.data ") # pragma kommentaar (linker," /merge:.reloc=.data")#pragma kommentaar (linker, "/merge:.rdata=.data")#pragma kommentaar (linker," / merge:.idata =.data ") Samuti on mõttekas määratleda saadud jaotise atribuudid: #pragma comment (linker," /section:.data, rwe ")
4. samm
Vähendage exe suurust, määrates plokkide suuruse minimaalse väärtuse, mille piki sektsioone sektsioonid joondatakse. Kasutage projekti atribuutide või pragmadirektiivi redigeerimisega määratud valikut / filealign linker: #pragma comment (linker, "/ filealign: 0x200") See meetod sobib väikestele moodulitele.
5. samm
Püüdke exe-faili suurust vähendada, ehitades selle masinakoodi vähendamiseks optimeerimisvõimalustega. Asendage kompilaatori / O2 või / Od valikud väärtusega / O1.
6. samm
Asendage exe-mooduli standardne DOS-i pistik oma omaga, millel on minimaalne suurus. Kasutage suvandit / stub linker: #pragma comment (linker, "/stub:mystub.exe") Siin on mystub.exe DOS-i käivitatava faili nimi, mis lisatakse exe-moodulisse pistikuna.
7. samm
Kaaluge oma rakenduse sisestuspunkti täpsustamist. See välistab staatiliste käitamisraamatukogude lähtestamiskoodi. Kasutage suvandit / entry linker, näiteks: #pragma comment (linker, "/ entry: MyStartup") void MyStartup () {:: MessageBox (NULL, "Hello!", "Message!", MB_OK);}
8. samm
Rakendage valmis exe-failile pakendiliideseid nagu UPX, ASPack, Themida, PECompact. Mooduli andmed tihendatakse. Need pakitakse pärast rakenduse käivitamist mällu lahti. See meetod annab häid tulemusi suurte exe-failide puhul, mis sisaldavad suurt hulka madala entroopiaga staatilisi andmeid (näiteks DIB rastrid ressursi jaotises).