Exe Hajmini Qanday Kamaytirish Mumkin

Mundarija:

Exe Hajmini Qanday Kamaytirish Mumkin
Exe Hajmini Qanday Kamaytirish Mumkin

Video: Exe Hajmini Qanday Kamaytirish Mumkin

Video: Exe Hajmini Qanday Kamaytirish Mumkin
Video: Video hajmini sifatini buzmay kamaytirish - video dars 2024, May
Anonim

O'tmishda shaxsiy kompyuterlarda kam miqdordagi RAM va uzoq muddatli saqlash moslamalari dasturlarning hajmiga juda qattiq cheklovlar qo'ygan. Ushbu muammo bugungi kunda mavjud emas. Biroq, hozir ham, ba'zan iloji boricha ishlab chiqilgan dasturning exe-modul hajmini minimallashtirish muhim ahamiyatga ega.

Exe hajmini qanday kamaytirish mumkin
Exe hajmini qanday kamaytirish mumkin

Kerakli

  • - manba kodi;
  • - kompilyator, bog'lovchi;
  • - PE modullarining kompressorlari, masalan UPX, Themida.

Ko'rsatmalar

1-qadam

Ilovaning chiqariladigan versiyasini yarating. IDE-dagi loyiha sozlamalarida tegishli konfiguratsiyani tanlang. Agar bunday konfiguratsiya bo'lmasa, uni mavjud konfiguratsiya asosida yarating. Tegishli ko'rsatmalarni olib tashlash va qo'shish orqali bog'lovchi parametrlari ro'yxatini o'zgartiring. Shunday qilib, Microsoft-dan ishlab chiqish paketidan foydalanganda / disk raskadrovka parametrini olib tashlashingiz kerak. Siz manba kodiga quyidagi yo'riqnomani ham qo'shishingiz mumkin: #pragma comment (linker, "/ RELEASE")

2-qadam

Iloji boricha bajariladigan faylni statik kutubxonalar bilan bog'lab qo'ymaslik uchun loyihani sozlang. Tegishli kutubxonalarning umumiy versiyalaridan foydalaning. Masalan, bog'lovchi opsiyasini / ML yoki / MT (statik bitta va ko'p tarmoqli kutubxonalarni) / MD (ko'p ipli CRT DLL) bilan almashtirish orqali C va C ++ ish vaqti kutubxonalarining kodini chiqarib tashlashingiz mumkin.

3-qadam

Exe modulining turli bo'limlarini bittasiga birlashtirishni o'ylab ko'ring. Agar fayl etarlicha katta bo'lsa, bu usul sezilarli natija bermaydi, ammo modulning boshlang'ich hajmi 20-30 kilobayt bo'lsa, daromad sezilarli bo'lishi mumkin. / Merge linker opsiyasi bo'limlarni birlashtirishga imkon beradi. Siz uni loyihaning parametrlari orqali o'rnatishingiz mumkin: / merge:.text =.data /merge:.reloc=.data /merge:.rdata=.data yoki manba kodidagi pragma direktivalari yordamida: #pragma comment (linker, "/ birlashtirish:.text =.data ") # pragma sharh (linker," /merge:.reloc=.data")#pragma comment (linker, "/merge:.rdata=.data")#pragma comment (linker," / birlashtirish:.idata =.data ") Bundan tashqari, natijada paydo bo'lgan qismning atributlarini aniqlash mantiqan to'g'ri keladi: #pragma comment (linker," /section:.data, rwe ")

4-qadam

Bo'limlar hizalanadigan chegaralar bo'ylab bloklar o'lchamining minimal qiymatini belgilab, exe hajmini kamaytiring. Loyiha xususiyatlarini yoki pragma yo'riqnomasini tahrirlash bilan ko'rsatilgan / filealign linker parametridan foydalaning: #pragma comment (linker, "/ filealign: 0x200") Ushbu usul kichik modullar uchun javob beradi.

5-qadam

Mashina kodi miqdorini kamaytirish uchun optimallashtirish imkoniyatlari bilan tuzib, exe faylini hajmini kamaytirishga harakat qiling. / O2 yoki / Od kompilyatori parametrlarini / O1 bilan almashtiring.

6-qadam

Exe-moduldagi standart DOS stubini o'zingiznikiga almashtiring, u minimal o'lchamga ega bo'ladi. / Stub linker opsiyasidan foydalaning: #pragma comment (linker, "/stub:mystub.exe")Bu erda mystub.exe exe moduliga stub sifatida qo'shiladigan DOS bajariladigan faylining nomi.

7-qadam

Arizaga o'zingizning kirish joyingizni ko'rsatishni o'ylab ko'ring. Bu statik ish vaqti kutubxonalarining boshlang'ich kodini yo'q qiladi. / Entry linker opsiyasidan foydalaning, masalan: #pragma comment (linker, "/ entry: MyStartup") void MyStartup () {:: MessageBox (NULL, "Salom!", "Message!", MB_OK);}

8-qadam

Tayyor exe faylida UPX, ASPack, Themida, PECompact kabi qadoqlash dasturlarini qo'llang. Modul ma'lumotlari siqiladi. Ilovani ishga tushirgandan so'ng ular xotiraga tushiriladi. Ushbu usul entropiyasi past bo'lgan katta miqdordagi statik ma'lumotlarni o'z ichiga olgan katta exe fayllari uchun yaxshi natijalar beradi (masalan, resurs qismidagi DIB rasterlari).

Tavsiya: