Kako Smanjiti Veličinu Exe-a

Sadržaj:

Kako Smanjiti Veličinu Exe-a
Kako Smanjiti Veličinu Exe-a

Video: Kako Smanjiti Veličinu Exe-a

Video: Kako Smanjiti Veličinu Exe-a
Video: Kako smanjiti velicinu nekog fajla ?(kompresovati ga). 2024, Novembar
Anonim

Mala količina RAM-a i uređaji za dugotrajno skladištenje podataka na ličnim računarima u prošlosti su nametali vrlo stroga ograničenja veličine programa. Ovaj problem danas ne postoji. Međutim, čak je i sada ponekad važno smanjiti veličinu exe-modula razvijene aplikacije što je više moguće.

Kako smanjiti veličinu exe-a
Kako smanjiti veličinu exe-a

Potrebno

  • - izvor;
  • - kompajler, povezivač;
  • - kompresori PE modula, kao što su UPX, Themida.

Instrukcije

Korak 1

Izgradite izdanu verziju aplikacije koja se može izvršiti. Odaberite odgovarajuću konfiguraciju u postavkama projekta u IDE-u. Ako ne postoji takva konfiguracija, kreirajte je na osnovu postojeće. Izmijenite listu opcija povezivanja uklanjanjem i dodavanjem odgovarajućih direktiva. Dakle, kada koristite Microsoftov razvojni paket, trebali biste ukloniti opciju / debug. Izvornom kodu možete dodati i sljedeću direktivu: #pragma comment (linker, "/ RELEASE")

Korak 2

Konfigurirajte projekt da biste izbjegli što je moguće povezivanje izvršne datoteke sa statičkim bibliotekama. Koristite zajedničke verzije odgovarajućih biblioteka. Na primjer, možete izuzeti kôd runtime knjižnica C i C ++ zamjenom opcije povezivanja / ML ili / MT (statičke biblioteke s jednim ili više niti) s / MD (CRT DLL s više niti).

Korak 3

Razmislite o spajanju različitih odjeljaka exe modula u jedan. Ova metoda neće dati primjetni rezultat ako je datoteka dovoljno velika, ali s početnom veličinom modula od 20-30 kilobajta, dobitak može biti značajan. Opcija povezivanja / spajanje omogućava spajanje odjeljaka. Možete ga postaviti kroz parametre projekta: / merge:.text =.data /merge:.reloc=.data /merge:.rdata=.data ili pomoću pragma direktiva u izvornom kodu: #pragma comment (linker, "/ spajanje:.text =.data ") # pragma komentar (linker," /merge:.reloc=.data")#pragma comment (linker, "/merge:.rdata=.data")#pragma comment (linker," / merge:.idata =.data ") Takođe ima smisla definirati atribute rezultirajućeg odjeljka: #pragma comment (linker," /section:.data, rwe ")

Korak 4

Smanjite veličinu exe postavljanjem minimalne vrijednosti veličine blokova duž granica čiji su odjeljci poravnati. Koristite / filealign linker opciju navedenu uređivanjem svojstava projekta ili pragma direktive: #pragma comment (linker, "/ filealign: 0x200") Ova metoda je pogodna za male module.

Korak 5

Pokušajte smanjiti veličinu exe datoteke gradeći je s opcijama optimizacije kako biste smanjili količinu mašinskog koda. Zamijenite opcije kompajlera / O2 ili / Od sa / O1.

Korak 6

Zamenite standardni DOS stub u exe-modulu svojim, koji će imati minimalnu veličinu. Upotrijebite opciju / stub linker: #pragma comment (linker, "/stub:mystub.exe")Ovdje mystub.exe je ime DOS izvršne datoteke koja će biti dodana u exe modul kao klica.

Korak 7

Razmislite o tome da odredite svoju tačku ulaza u aplikaciju. Ovo će eliminirati inicijalizacijski kod statičnih runtime knjižnica. Koristite opciju / entry linker, na primjer: #pragma comment (linker, "/ entry: MyStartup") void MyStartup () {:: MessageBox (NULL, "Hello!", "Message!", MB_OK);}

Korak 8

Primijenite uslužne programe za pakiranje poput UPX, ASPack, Themida, PECompact na gotovu exe datoteku. Podaci modula bit će komprimirani. Otpakirat će se u memoriju nakon pokretanja aplikacije. Ova metoda daje dobre rezultate za velike exe datoteke koje sadrže veliku količinu statičkih podataka s malom entropijom (na primjer, DIB rasteri u odjeljku resursa).

Preporučuje se: