Bir Exe ölçüsünü Necə Azaltmaq Olar

Mündəricat:

Bir Exe ölçüsünü Necə Azaltmaq Olar
Bir Exe ölçüsünü Necə Azaltmaq Olar

Video: Bir Exe ölçüsünü Necə Azaltmaq Olar

Video: Bir Exe ölçüsünü Necə Azaltmaq Olar
Video: Aybaşı olursuz, amma qan yoxdu - Bu necə olur? 2024, Bilər
Anonim

Keçmişdə fərdi kompüterlərdə az miqdarda RAM və uzunmüddətli yaddaş cihazları proqramların ölçüsünə çox ciddi məhdudiyyətlər qoymuşdu. Bu problem bu gün mövcud deyil. Lakin indi də bəzən inkişaf etmiş tətbiqetmənin exe-modulunun ölçüsünü mümkün qədər minimuma endirmək vacibdir.

Bir exe ölçüsünü necə azaltmaq olar
Bir exe ölçüsünü necə azaltmaq olar

Zəruri

  • - mənbə;
  • - tərtibçi, bağlayıcı;
  • - UPX, Themida kimi PE modullarının kompressorları.

Təlimat

Addım 1

Tətbiqin buraxılış versiyasını yürütülə bilən tərtib edin. IDE-də layihə parametrlərində uyğun konfiqurasiyanı seçin. Əgər belə bir konfiqurasiya yoxdursa, mövcud olana əsasən yaradın. Müvafiq direktivləri qaldıraraq əlavə edərək bağlayıcı seçimlərinin siyahısını dəyişdirin. Beləliklə, Microsoft-dan bir inkişaf paketi istifadə edərkən, / debug seçimini silməlisiniz. Mənbə koduna aşağıdakı direktivi də əlavə edə bilərsiniz: #pragma comment (linker, "/ RELEASE")

Addım 2

İcra olunan sənədləri mümkün qədər statik kitabxanalarla əlaqələndirməmək üçün layihəni konfiqurasiya edin. Müvafiq kitabxanaların paylaşılan versiyalarından istifadə edin. Məsələn, bağlayıcı seçimi / ML və / MT (statik tək və çox saplı kitabxanalar) / MD (çox yivli CRT DLL) ilə əvəz edərək C və C ++ iş vaxtı kitabxanalarının kodunu istisna edə bilərsiniz.

Addım 3

Exe modulunun fərqli bölmələrini birinə birləşdirməyi düşünün. Fayl kifayət qədər böyükdürsə, bu metod nəzərə çarpan bir nəticə verməyəcək, lakin 20-30 kilobaytlıq ilkin modul ölçüsü ilə qazanc əhəmiyyətli ola bilər. / Birləşmə bağlayıcı seçimi bölmələri birləşdirməyə imkan verir. Bunu layihə parametrləri ilə qura bilərsiniz: / merge:.text =.data /merge:.reloc=.data /merge:.rdata=.data və ya mənbə kodundakı pragma direktivlərindən istifadə edərək: #pragma comment (linker, "/ birləşmə:.text =.data ") # pragma şərh (linker," /merge:.reloc=.data")#pragma comment (linker, "/merge:.rdata=.data")#pragma comment (linker," / birləşmə:.idata =.data ") Nəticədə yaranan hissənin atributlarını təyin etmək də mənalıdır: #pragma comment (linker," /section:.data, rwe ")

Addım 4

Bölmələrin hizalandığı sərhədlər boyunca blokların ölçüsünün minimum dəyərini təyin edərək exe ölçüsünü azaldın. Layihə xüsusiyyətlərini və ya praqma direktivini düzəldərək göstərilən / filealign linker seçimindən istifadə edin: #pragma comment (linker, "/ filealign: 0x200") Bu metod kiçik modullar üçün uyğundur.

Addım 5

Maşın kodu miqdarını azaltmaq üçün optimallaşdırma seçimləri ilə quraraq exe faylının ölçüsünü azaltmağa çalışın. / O2 və / Od kompilyator seçimlərini / O1 ilə əvəz edin.

Addım 6

Exe-modulda standart DOS stubunu minimum ölçüyə sahib olan özünüzlə əvəz edin. / Stub linker seçimindən istifadə edin: #pragma comment (linker, "/stub:mystub.exe") Budur mystub.exe, exe moduluna bir stub olaraq əlavə ediləcək DOS yürütülebilir sənədin adıdır.

Addım 7

Tətbiqə öz giriş nöqtənizi göstərməyi düşünün. Bu, statik iş vaxtı kitabxanalarının başlanğıc kodunu ləğv edəcəkdir. / Giriş bağlayıcı seçimini istifadə edin, məsələn: #pragma comment (linker, "/ entry: MyStartup") void MyStartup () {:: MessageBox (NULL, "Hello!", "Message!", MB_OK);}

Addım 8

Bitmiş exe sənədinə UPX, ASPack, Themida, PECompact kimi qablaşdırma proqramlarını tətbiq edin. Modul məlumatları sıxılacaqdır. Tətbiqi işə saldıqdan sonra yaddaşdan çıxarılacaqlar. Bu metod, aşağı entropiyası olan çox sayda statik məlumat ehtiva edən böyük exe faylları üçün yaxşı nəticələr verir (məsələn, resurs bölməsində DIB rasterləri).

Tövsiyə: