Como Reduzir O Tamanho De Um Exe

Índice:

Como Reduzir O Tamanho De Um Exe
Como Reduzir O Tamanho De Um Exe

Vídeo: Como Reduzir O Tamanho De Um Exe

Vídeo: Como Reduzir O Tamanho De Um Exe
Vídeo: Diminuindo o Tamanho dos Programas EXE com o UPX 2024, Maio
Anonim

A pequena quantidade de RAM e dispositivos de armazenamento de longo prazo em computadores pessoais no passado impunham restrições muito estritas ao tamanho dos programas. Este problema não existe hoje. No entanto, mesmo agora, às vezes é importante minimizar o tamanho do módulo exe do aplicativo desenvolvido tanto quanto possível.

Como reduzir o tamanho de um exe
Como reduzir o tamanho de um exe

Necessário

  • - fonte;
  • - compilador, vinculador;
  • - compressores de módulos PE, como UPX, Themida.

Instruções

Passo 1

Crie a versão de lançamento do executável do aplicativo. Selecione a configuração apropriada nas configurações do projeto no IDE. Se não houver tal configuração, crie-a com base na existente. Modifique a lista de opções do vinculador removendo e adicionando as diretivas apropriadas. Portanto, ao usar um pacote de desenvolvimento da Microsoft, você deve remover a opção / debug. Você também pode adicionar a seguinte diretiva ao código-fonte: #pragma comment (linker, "/ RELEASE")

Passo 2

Configure o projeto para evitar vincular o executável a bibliotecas estáticas, tanto quanto possível. Use versões compartilhadas das respectivas bibliotecas. Por exemplo, você pode excluir o código das bibliotecas de tempo de execução C e C ++ substituindo a opção de vinculador / ML ou / MT (bibliotecas estáticas de um e vários segmentos) por / MD (DLL CRT de vários segmentos).

etapa 3

Considere mesclar diferentes seções do módulo exe em uma. Este método não dará um resultado perceptível se o arquivo for grande o suficiente, mas com o tamanho do módulo inicial de 20-30 kilobytes, o ganho pode ser significativo. A opção de vinculador / merge permite mesclar seções. Você pode defini-lo por meio dos parâmetros do projeto: / merge:.text =.data /merge:.reloc=.data /merge:.rdata=.data ou usando diretivas pragma no código-fonte: #pragma comment (linker, "/ merge:.text =.data ") # pragma comment (linker," /merge:.reloc=.data")#pragma comment (linker, "/merge:.rdata=.data")#pragma comment (linker," / merge:.idata =.data ") Também faz sentido definir os atributos da seção resultante: #pragma comment (linker," /section:.data, rwe ")

Passo 4

Reduza o tamanho do exe definindo o valor mínimo do tamanho dos blocos ao longo dos limites dos quais as seções estão alinhadas. Use a opção de vinculador / filealign especificada editando as propriedades do projeto ou a diretiva pragma: #pragma comment (linker, "/ filealign: 0x200") Este método é adequado para módulos pequenos.

Etapa 5

Tente reduzir o tamanho do arquivo exe construindo-o com opções de otimização para reduzir a quantidade de código de máquina. Substitua as opções de compilador / O2 ou / Od por / O1.

Etapa 6

Substitua o stub padrão do DOS no módulo exe pelo seu próprio, que terá o tamanho mínimo. Use a opção de vinculador / stub: #pragma comment (linker, "/stub:mystub.exe")Aqui mystub.exe é o nome do arquivo executável DOS que será adicionado ao módulo exe como um stub.

Etapa 7

Considere especificar seu próprio ponto de entrada para o aplicativo. Isso eliminará o código de inicialização das bibliotecas de tempo de execução estáticas. Use a opção de vinculador / entry, por exemplo: #pragma comment (linker, "/ entry: MyStartup") void MyStartup () {:: MessageBox (NULL, "Hello!", "Message!", MB_OK);}

Etapa 8

Aplique utilitários de empacotamento como UPX, ASPack, Themida, PECompact ao arquivo exe acabado. Os dados do módulo serão compactados. Eles serão desempacotados na memória após o lançamento do aplicativo. Este método fornece bons resultados para grandes arquivos exe contendo uma grande quantidade de dados estáticos com baixa entropia (por exemplo, rasters DIB na seção de recursos).

Recomendado: