como reduzir o binario de um c++?  XML
Índice dos Fóruns » Assuntos gerais (Off-topic)
Autor Mensagem
bandrade
GUJ Ranger

Membro desde: 20/01/2003 15:45:15
Mensagens: 782
Offline

pessoas.... é o seguinte... no java a gente pode usar um ofuscador pra tirar as classes e funcoes desnecessarias e tal... soh que eu to com um problema gigante....
minha aplicação tah dando uns 200K e preciso q ela tenha até 100K pois é pra aplicativos móveis... então, alguem tem noticia de algum ofuscador pra C++??

antes q vcs falem q eu sou um péssimo programador por fazer uma aplicação tão grande eu explico: a gente tem uma biblioteca pra subir um pouco o nível e deixar a programação (MUITO) mais fácil... dai a aplicação cresce né...

ah, jah busquei aki no chat e no google (antes q me xinguem.. (;
sem muito sucesso... );

valeu,

This message was edited 1 time. Last update was at 27/04/2005 11:03:45

pcalcado
Moderador
[Avatar]

Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline

Qual compilador mesmo?

Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay
[Email] [WWW] [Yahoo!] [MSN]
cv
Moderador
[Avatar]

Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline

Em C++, eu sinto dizer, mas nao tem milagre. O jeito eh verificar todos os includes e todas as bibliotecas utilizadas e ver o que da pra cortar. Eh um porre, eu sei, mas...

Outra alternativa eh fazer um self-loader que carrega o codigo gzipado dele mesmo, do mesmo jeito que o bom e velho DOS4GW fazia...
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
pcalcado
Moderador
[Avatar]

Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline

Olá,

Dica de um programador C++ amigo meu (valeu, Gabriel):

que tal o flag -O2 (onde 2 é o nível de otimização, depende do compilador, pode ser maior ou menor) ?

This message was edited 1 time. Last update was at 27/04/2005 13:23:59


Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay
[Email] [WWW] [Yahoo!] [MSN]
pcalcado
Moderador
[Avatar]

Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline

http://www.catch22.net/tuts/minexe.asp

Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay
[Email] [WWW] [Yahoo!] [MSN]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Tem algumas opções de compilação que você pode tentar, mas com resultados não muito satisfatórios, e nem sempre disponíveis no seu compilador (é o Embedded Visual C++ que você está usando? Se for, não sei exatamente quais as opções porque não estou com ele instalado aqui, e de qualquer maneira ele tem menos opções que o compilador MSVC++ normal.)
Uma delas é o /Os (favor code space), mas não adianta muito (deve reduzir no máximo uns 4K no seu programa de 200 K.
Outra delas é o /Gf (enable string pooling), que na hora da link-edição deve pegar a maior parte das constantes strings repetidas, e criar apenas uma cópia - acho que ela deve ser combinada com /GF (enable read-only string pooling).
Não é necessário repetir que tais opções de compilação devem ser aplicadas para todo o código, incluindo as bibliotecas que estão sendo usadas.
Deve haver alguma opção no linker para tentar reduzir o tamanho ao máximo possível também.
E obviamente você tem de compilar em modo Release e remover um monte de comodidades (por exemplo, mesmo em modo Release é possível ter informação de depuração, o que ajuda na hora de detectar problemas em uma aplicação na produção. Veja se isso não está sendo incluído também).
[WWW]
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

dependendo da plataforma, você pode dar strip nos símbolos do executavel.

Mande o teu linker gerar um mapa do executavel e veja onde tem gordura.

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
renatosilva
GUJ Master

Membro desde: 16/12/2004 17:09:19
Mensagens: 1787
Offline

UPX
fmeyer
Moderador
[Avatar]
Membro desde: 22/02/2005 17:26:29
Mensagens: 1583
Localização: Sao Paulo
Offline

é gcc ??

se for a melhor otimização é -O3.
Dica, se voce tiver uma heap razoavel, troque variaveis estaticas como estruturas por ponteiros e não use muito a pilha, não sei por que cargas d'agua o C++ gera um executavel maior para variaveis staticas e de pilha

Fernando Meyer http://fernandomeyer.com
[Email] [WWW]
bandrade
GUJ Ranger

Membro desde: 20/01/2003 15:45:15
Mensagens: 782
Offline

puts... vamos lah... utilizio o Visual Estudio pra codificação (é, pra brew eh esse mesmo... não tem melhor) e o ARM para a geração do mod (que é o executável do BREW), geração dos .o e depois do .mod né... ele eh responsável pela linkedição... );

aaahhh... odeio o mundo de compilados... );

Will Code For Food
 
Índice dos Fóruns » Assuntos gerais (Off-topic)
Ir para:   
Powered by JForum 2.1.8 © JForum Team