Как да намалите размера на Exe

Съдържание:

Как да намалите размера на Exe
Как да намалите размера на Exe

Видео: Как да намалите размера на Exe

Видео: Как да намалите размера на Exe
Видео: Как уменьшить масштаб в AutoCAD 2024, Ноември
Anonim

Малкото количество RAM и устройства за дългосрочно съхранение на персонални компютри в миналото налагаха много строги ограничения върху размера на програмите. Този проблем не съществува днес. Въпреки това, дори и сега понякога е важно да намалите максимално размера на exe-модула на разработеното приложение.

Как да намалите размера на exe
Как да намалите размера на exe

Необходимо

  • - източник;
  • - компилатор, линкер;
  • - компресори от PE модули, като UPX, Themida.

Инструкции

Етап 1

Изградете версията за изпълнение на изпълнимия файл на приложението. Изберете подходящата конфигурация в настройките на проекта в IDE. Ако няма такава конфигурация, създайте я въз основа на съществуващата. Променете списъка с опции за свързване, като премахнете и добавите подходящи директиви. Така че, когато използвате пакет за разработка от Microsoft, трябва да премахнете опцията / debug. Можете също да добавите следната директива към изходния код: #pragma comment (linker, "/ RELEASE")

Стъпка 2

Конфигурирайте проекта, за да избегнете максимално свързване на изпълнимия файл със статични библиотеки. Използвайте споделени версии на съответните библиотеки. Например можете да изключите кода на библиотеките за изпълнение C и C ++, като замените опцията за свързване / ML или / MT (статични едно- и многонишкови библиотеки) с / MD (многонишкови CRT DLL).

Стъпка 3

Помислете за сливане на различни раздели на модула exe в едно. Този метод няма да даде забележим резултат, ако файлът е достатъчно голям, но с първоначалния размер на модула от 20-30 килобайта, печалбата може да бъде значителна. Опцията / merge linker ви позволява да обединявате раздели. Можете да го зададете чрез параметрите на проекта: / merge:.text =.data /merge:.reloc=.data /merge:.rdata=.data или като използвате прагма директиви в изходния код: #pragma comment (linker, "/ merge:.text =.data ") # pragma comment (linker," /merge:.reloc=.data")#pragma comment (linker, "/merge:.rdata=.data")#pragma comment (linker," / merge:.idata =.data ") Също така има смисъл да се дефинират атрибутите на получения раздел: #pragma comment (linker," /section:.data, rwe ")

Стъпка 4

Намалете размера на exe, като зададете минималната стойност на размера на блоковете, по границите на които секциите са подравнени. Използвайте опцията / filealign linker, посочена чрез редактиране на свойствата на проекта или директивата pragma: #pragma comment (linker, "/ filealign: 0x200") Този метод е подходящ за малки модули.

Стъпка 5

Опитайте се да намалите размера на exe файла, като го изградите с опции за оптимизация, за да намалите количеството машинен код. Заменете опциите на компилатора / O2 или / Od с / O1.

Стъпка 6

Заменете стандартния DOS заглушител в exe-модула със свой собствен, който ще има минимален размер. Използвайте опцията / stub linker: #pragma comment (linker, "/stub:mystub.exe")Тук mystub.exe е името на изпълнимия файл на DOS, който ще бъде добавен към модула exe като мъниче.

Стъпка 7

Помислете за посочване на вашата собствена входна точка в приложението. Това ще премахне кода за инициализация на статичните библиотеки за изпълнение. Използвайте опцията / entry linker, например: #pragma comment (linker, "/ entry: MyStartup") void MyStartup () {:: MessageBox (NULL, "Hello!", "Message!", MB_OK);}

Стъпка 8

Приложете помощни програми за опаковане като UPX, ASPack, Themida, PECompact към готовия exe файл. Данните от модула ще бъдат компресирани. Те ще бъдат разопаковани в паметта след стартиране на приложението. Този метод дава добри резултати за големи exe файлове, съдържащи голямо количество статични данни с ниска ентропия (например DIB растри в раздела за ресурси).

Препоръчано: