A személyi számítógépeken a kis mennyiségű RAM és hosszú távú tárolóeszközök nagyon szigorú korlátozásokat szabtak a programok méretére. Ez a probléma ma nem létezik. Azonban még most is néha fontos a lehető legkisebbre csökkenteni a kifejlesztett alkalmazás exe-moduljának méretét.
Szükséges
- - forrás;
- - fordító, linkelő;
- - PE modulok kompresszorai, például UPX, Themida.
Utasítás
1. lépés
Készítse el az alkalmazás futtatható verziójának kiadási verzióját. Válassza ki a megfelelő konfigurációt az IDE projektbeállításaiban. Ha nincs ilyen konfiguráció, akkor a meglévő alapján hozza létre. Módosítsa a linkelő opciók listáját a megfelelő irányelvek eltávolításával és hozzáadásával. Tehát a Microsoft fejlesztői csomagjának használatakor el kell távolítania a / debug beállítást. A forráskódhoz hozzáadhatja a következő irányelvet is: #pragma comment (linker, "/ RELEASE")
2. lépés
Konfigurálja a projektet, hogy elkerülje a futtatható fájl és a statikus könyvtárak lehető legnagyobb mértékű összekapcsolását. Használja a megfelelő könyvtárak megosztott verzióit. Például kizárhatja a C és C ++ futásidejű könyvtárak kódját azáltal, hogy az összekapcsoló opciót / ML vagy / MT (statikus egy- és többszálú könyvtárak) lecseréli / MD (többszálú CRT DLL) -re.
3. lépés
Fontolja meg az exe modul különböző szakaszainak egyesítését egybe. Ez a módszer nem eredményez észrevehető eredményt, ha a fájl elég nagy, de a kezdeti 20-30 kilobájtos modulmérettel a nyereség jelentős lehet. A / merge linker opció lehetővé teszi szakaszok egyesítését. Beállíthatja a projekt paraméterein keresztül: / merge:.text =.data /merge:.reloc=.data /merge:.rdata=.data, vagy a forráskód pragma direktíváival: #pragma comment (linker, "/ egyesítés:.text =.data ") # pragma megjegyzés (linker," /merge:.reloc=.data")#pragma comment (linker, "/merge:.rdata=.data")#pragma comment (linker," / merge:.idata =.data ") Van értelme meghatározni az eredményül kapott szakasz attribútumait is: #pragma comment (linker," /section:.data, rwe ")
4. lépés
Csökkentse az exe méretét a blokkok méretének minimális értékének beállításával, amelyek határai mentén a szakaszok igazodnak. Használja a / filealign linker opciót, amelyet a projekt tulajdonságainak vagy a pragma irányelv szerkesztésével határoz meg: #pragma comment (linker, "/ filealign: 0x200") Ez a módszer kis modulokhoz alkalmas.
5. lépés
Próbálja meg csökkenteni az exe fájl méretét úgy, hogy optimalizálási opciókkal állítja össze a gépi kód csökkentését. Cserélje az / O2 vagy / Od fordító opciókat a / O1 parancsra.
6. lépés
Cserélje ki az exe-modul szokásos DOS csonkját a sajátjára, amely a legkisebb méretű lesz. Használja a / stub linker opciót: #pragma comment (linker, "/stub:mystub.exe") Itt a mystub.exe annak a DOS futtatható fájlnak a neve, amelyet csonkként hozzáadnak az exe modulhoz.
7. lépés
Fontolja meg az alkalmazás saját belépési pontjának megadását. Ez kiküszöböli a statikus futásidejű könyvtárak inicializálási kódját. Használja a / entry linker opciót, például: #pragma comment (linker, "/ entry: MyStartup") void MyStartup () {:: MessageBox (NULL, "Hello!", "Message!", MB_OK);}
8. lépés
Alkalmazzon olyan csomagolási segédprogramokat, mint az UPX, ASPack, Themida, PECompact a kész exe fájlra. A modul adatai tömörítésre kerülnek. Az alkalmazás elindítása után kibontják a memóriába. Ez a módszer jó eredményeket ad nagy exe fájlok esetén, amelyek nagy mennyiségű statikus adatot tartalmaznak alacsony entrópiával (például DIB raszterek az erőforrás részben).