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).