Sasia e vogël e RAM dhe pajisjeve ruajtëse afatgjata në kompjuterët personalë në të kaluarën imponuan kufizime shumë të rrepta për madhësinë e programeve. Ky problem nuk ekziston sot. Sidoqoftë, edhe tani ndonjëherë është e rëndësishme të minimizohet madhësia e exe-modulit të aplikacionit të zhvilluar sa më shumë që të jetë e mundur.
E nevojshme
- - burimi;
- - përpilues, lidhës;
- - kompresorët e moduleve PE, të tilla si UPX, Themida.
Udhëzimet
Hapi 1
Krijoni versionin e lëshimit të ekzekutueshëm të aplikacionit. Zgjidhni konfigurimin e duhur në cilësimet e projektit në IDE. Nëse nuk ka një konfigurim të tillë, krijojeni atë bazuar në atë ekzistues. Modifikoni listën e opsioneve të lidhësit duke hequr dhe shtuar direktivat e duhura. Pra, kur përdorni një paketë zhvillimi nga Microsoft, duhet të hiqni opsionin / debug. Gjithashtu mund të shtoni direktivën e mëposhtme në kodin burimor: #pragma comment (linker, "/ RELEASE")
Hapi 2
Konfiguroni projektin për të shmangur lidhjen e ekzekutueses me bibliotekat statike sa më shumë që të jetë e mundur. Përdorni versione të përbashkëta të bibliotekave përkatëse. Për shembull, mund të përjashtoni kodin e bibliotekave të ekzekutimit C dhe C ++ duke zëvendësuar opsionin e lidhësit / ML ose / MT (biblioteka statike me një dhe me shumë fije) me / MD (CRT me shumë fije DLL).
Hapi 3
Merrni parasysh bashkimin e seksioneve të ndryshme të modulit exe në një. Kjo metodë nuk do të japë një rezultat të dukshëm nëse skedari është mjaft i madh, por me madhësinë fillestare të modulit prej 20-30 kilobajt, fitimi mund të jetë i konsiderueshëm. Opsioni / bashkoni lidhësin ju lejon të bashkoni seksionet. Mund ta vendosni përmes parametrave të projektit: / bashkoni:.text =.data /merge:.reloc=.data /merge:.rdata=.data ose duke përdorur direktivat pragma në kodin burimor: #pragma comment (linker, "/ bashkoni:.text =.data ") # koment pragma (lidhës," /merge:.reloc=.data")#pragma koment (lidhës, "/merge:.rdata=.data")#pragma koment (lidhës," / bashko:.idata =.data ") Gjithashtu ka kuptim të përcaktojmë atributet e seksionit që rezulton: #pragma comment (linker," /section:.data, rwe ")
Hapi 4
Zvogëloni madhësinë e exe duke vendosur vlerën minimale të madhësisë së blloqeve përgjatë kufijve të të cilave përafrohen seksionet. Përdorni opsionin / filealign linker të specifikuar duke redaktuar pronat e projektit ose direktivën pragma: #pragma comment (linker, "/ filealign: 0x200") Kjo metodë është e përshtatshme për module të vogla.
Hapi 5
Mundohuni të zvogëloni madhësinë e skedarit exe duke e ndërtuar atë me opsione optimizimi për të zvogëluar sasinë e kodit të makinës. Zëvendësoni opsionet e përpiluesit / O2 ose / Od me / O1.
Hapi 6
Zëvendësoni cungun standard DOS në modulin exe me tuajin, i cili do të ketë madhësinë minimale. Përdorni opsionin lidhës / cung: #pragma koment (lidhës, "/stub:mystub.exe")Këtu mystub.exe është emri i skedarit të ekzekutueshëm DOS që do t'i shtohet modulit exe si cung.
Hapi 7
Merrni parasysh të specifikoni pikën tuaj të hyrjes në aplikacion. Kjo do të eliminojë kodin fillestar të bibliotekave statike të kohës së funksionimit. Përdorni opsionin / linker linker, për shembull: #pragma comment (linker, "/ entry: MyStartup") void MyStartup () {:: MessageBox (NULL, "Hello!", "Message!", MB_OK);}
Hapi 8
Zbatoni shërbimet e paketimit si UPX, ASPack, Themida, PECompact në skedarin e përfunduar exe. Të dhënat e modulit do të kompresohen. Ata do të shpaketohen në kujtesë pasi të fillojnë aplikimin. Kjo metodë jep rezultate të mira për skedarët e mëdhenj exe që përmbajnë një sasi të madhe të të dhënave statike me entropi të ulët (për shembull, rasters DIB në seksionin e burimeve).