Geçmişte kişisel bilgisayarlardaki az miktarda RAM ve uzun süreli depolama aygıtları, programların boyutuna çok katı kısıtlamalar getirdi. Bu sorun bugün mevcut değil. Ancak, şimdi bile, geliştirilen uygulamanın exe-modülünün boyutunu mümkün olduğunca en aza indirmek bazen önemlidir.
Gerekli
- - kaynak;
- - derleyici, bağlayıcı;
- - UPX, Themida gibi PE modüllerinin kompresörleri.
Talimatlar
Aşama 1
Yürütülebilir uygulamanın yayın sürümünü oluşturun. IDE'deki proje ayarlarında uygun konfigürasyonu seçin. Böyle bir konfigürasyon yoksa, mevcut konfigürasyona göre oluşturun. Uygun yönergeleri kaldırarak ve ekleyerek bağlayıcı seçenekleri listesini değiştirin. Bu nedenle, Microsoft'tan bir geliştirme paketi kullanırken / hata ayıklama seçeneğini kaldırmalısınız. Ayrıca kaynak koduna şu yönergeyi de ekleyebilirsiniz: #pragma comment (bağlayıcı, "/ RELEASE")
Adım 2
Yürütülebilir dosyayı statik kitaplıklarla mümkün olduğunca bağlamaktan kaçınmak için projeyi yapılandırın. İlgili kitaplıkların paylaşılan sürümlerini kullanın. Örneğin, / ML veya / MT (statik tek ve çok iş parçacıklı kitaplıklar) bağlayıcı seçeneğini / MD (çok iş parçacıklı CRT DLL) ile değiştirerek C ve C ++ çalışma zamanı kitaplıklarının kodunu hariç tutabilirsiniz.
Aşama 3
Exe modülünün farklı bölümlerini bir araya getirmeyi düşünün. Dosya yeterince büyükse bu yöntem gözle görülür bir sonuç vermeyecektir, ancak 20-30 kilobaytlık ilk modül boyutuyla kazanç önemli olabilir. / merge linker seçeneği, bölümleri birleştirmenize izin verir. Bunu proje parametreleri aracılığıyla ayarlayabilirsiniz: / merge:.text =.data /merge:.reloc=.data /merge:.rdata=.data veya kaynak kodundaki pragma yönergelerini kullanarak: #pragma comment (bağlayıcı, "/ birleştirme:.text =.data ") # pragma yorumu (bağlayıcı," /merge:.reloc=.data")#pragma yorumu (bağlayıcı, "/merge:.rdata=.data")#pragma yorumu (bağlayıcı," / merge:.idata =.data ") Ortaya çıkan bölümün niteliklerini tanımlamak da mantıklıdır: #pragma comment (bağlayıcı," /section:.data, rwe ")
4. Adım
Bölümlerin hizalandığı sınırlar boyunca blokların boyutunun minimum değerini ayarlayarak exe'nin boyutunu azaltın. Proje özelliklerini veya pragma yönergesini düzenleyerek belirtilen / filealign linker seçeneğini kullanın: #pragma comment (bağlayıcı, "/ filealign: 0x200") Bu yöntem küçük modüller için uygundur.
Adım 5
Makine kodu miktarını azaltmak için optimizasyon seçenekleriyle oluşturarak exe dosyasının boyutunu küçültmeye çalışın. / O2 veya / Od derleyici seçeneklerini / O1 ile değiştirin.
6. Adım
Exe modülündeki standart DOS saplamasını, minimum boyuta sahip olacak şekilde kendinizinkiyle değiştirin. / saplama bağlayıcı seçeneğini kullanın: #pragma yorumu (bağlayıcı, "/stub:mystub.exe")Burada mystub.exe, exe modülüne bir saplama olarak eklenecek DOS yürütülebilir dosyasının adıdır.
7. Adım
Uygulamaya kendi giriş noktanızı belirtmeyi düşünün. Bu, statik çalışma zamanı kitaplıklarının başlatma kodunu ortadan kaldıracaktır. / giriş bağlayıcı seçeneğini kullanın, örneğin: #pragma comment (bağlayıcı, "/ giriş: MyStartup") void MyStartup () {:: MessageBox (NULL, "Merhaba!", "Mesaj!", MB_OK);}
8. Adım
UPX, ASPack, Themida, PECompact gibi paketleme yardımcı programlarını bitmiş exe dosyasına uygulayın. Modül verileri sıkıştırılacaktır. Uygulamayı başlattıktan sonra belleğe açılacaklar. Bu yöntem, düşük entropiye sahip büyük miktarda statik veri içeren büyük exe dosyaları için iyi sonuçlar verir (örneğin, kaynak bölümündeki DIB rasterleri).