Jak Zmniejszyć Rozmiar Exe?

Spisu treści:

Jak Zmniejszyć Rozmiar Exe?
Jak Zmniejszyć Rozmiar Exe?

Wideo: Jak Zmniejszyć Rozmiar Exe?

Wideo: Jak Zmniejszyć Rozmiar Exe?
Wideo: Jak zmniejszyć rozmiar filmu nie tracąc na jakości || Szybko i za darmo 2024, Może
Anonim

Niewielka ilość pamięci RAM i urządzeń pamięci długoterminowej na komputerach osobistych w przeszłości nakładała bardzo surowe ograniczenia na rozmiar programów. Ten problem dzisiaj nie istnieje. Jednak nawet teraz czasami ważne jest, aby maksymalnie zminimalizować rozmiar modułu exe tworzonej aplikacji.

Jak zmniejszyć rozmiar exe?
Jak zmniejszyć rozmiar exe?

Niezbędny

  • - źródło;
  • - kompilator, linker;
  • - kompresory modułów PE takich jak UPX, Themida.

Instrukcje

Krok 1

Skompiluj wydanie wersji pliku wykonywalnego aplikacji. Wybierz odpowiednią konfigurację w ustawieniach projektu w IDE. Jeśli nie ma takiej konfiguracji, utwórz ją na podstawie istniejącej. Zmodyfikuj listę opcji konsolidatora, usuwając i dodając odpowiednie dyrektywy. Tak więc, korzystając z pakietu deweloperskiego firmy Microsoft, należy usunąć opcję / debug. Możesz również dodać następującą dyrektywę do kodu źródłowego: #pragma komentarz (linker, "/ RELEASE")

Krok 2

Skonfiguruj projekt, aby w jak największym stopniu uniknąć łączenia pliku wykonywalnego z bibliotekami statycznymi. Użyj udostępnionych wersji odpowiednich bibliotek. Na przykład można wykluczyć kod bibliotek wykonawczych C i C++, zastępując opcję konsolidatora /ML lub /MT (statyczne biblioteki jedno- i wielowątkowe) na /MD (wielowątkowy DLL CRT).

Krok 3

Rozważ połączenie różnych sekcji modułu exe w jedną. Ta metoda nie da zauważalnego rezultatu, jeśli plik jest wystarczająco duży, ale przy początkowym rozmiarze modułu wynoszącym 20-30 kilobajtów zysk może być znaczny. Opcja konsolidatora / merge pozwala na scalenie sekcji. Można to ustawić poprzez parametry projektu: / merge:.text =.data /merge:.reloc=.data /merge:.rdata=.data lub używając dyrektyw pragma w kodzie źródłowym: #pragma comment (linker, "/ merge:.text =.data ") # komentarz pragma (konsolidator," /merge:.reloc=.data")#komentarze pragma (linker, "/merge:.rdata=.data")#komentarze pragma (linker," / merge:.idata =.data ") Sensowne jest również zdefiniowanie atrybutów wynikowej sekcji: #pragma comment (linker," /section:.data, rwe ")

Krok 4

Zmniejsz rozmiar pliku exe, ustawiając minimalną wartość rozmiaru bloków wzdłuż granic, których sekcje są wyrównane. Użyj opcji konsolidatora / filealign określonej przez edycję właściwości projektu lub dyrektywy pragma: #pragma comment (linker, "/ filealign: 0x200") Ta metoda jest odpowiednia dla małych modułów.

Krok 5

Spróbuj zmniejszyć rozmiar pliku exe, budując go z opcjami optymalizacji, aby zmniejszyć ilość kodu maszynowego. Zamień opcje kompilatora /O2 lub /Od na /O1.

Krok 6

Zastąp standardowy skrót DOS w module exe własnym, który będzie miał minimalny rozmiar. Użyj opcji / stub linker: #pragma comment (linker, "/stub:mystub.exe") Tutaj mystub.exe to nazwa pliku wykonywalnego DOS, który zostanie dodany do modułu exe jako skrót.

Krok 7

Rozważ określenie własnego punktu wejścia do aplikacji. Wyeliminuje to kod inicjujący statycznych bibliotek wykonawczych. Użyj opcji konsolidatora / entry, na przykład: #pragma comment (linker, "/ entry: MyStartup") void MyStartup() {:: MessageBox (NULL, "Hello!", "Message!", MB_OK);}

Krok 8

Zastosuj narzędzia do pakowania, takie jak UPX, ASPack, Themida, PECompact do gotowego pliku exe. Dane modułu zostaną skompresowane. Zostaną one rozpakowane do pamięci po uruchomieniu aplikacji. Ta metoda daje dobre wyniki w przypadku dużych plików exe zawierających dużą ilość danych statycznych o niskiej entropii (np. rastry DIB w sekcji zasobów).

Zalecana: