Je compile tres bien, mais voila, mon prog fait plus de 600ko.
Essaie d'enlever les infos de debug :
strip mon_prog.exe
Pierre Maurette
Bonjour,
J'ai juste un petit probleme et j'ai beau chercher sur le net, je ne trouve pas de reponce...
Je compile un prog simple utilsant WIN32API, prog qui ne créé qu'une toute petite fenetre avec 4 controle (3 textbox et un bouton).
Je compile tres bien, mais voila, mon prog fait plus de 600ko.
J'ai fait des test et aparement des que j'utilise la STL, mon prog "gonfle" d'un coup!!!
J'ai lut quelque part que c'est du au fait que STL est compiler en mode debug....
En faite comment faire pour compiler mon prog en Release pour qu'il prenne une place raisonnable (moin de 100ko je suppose)??? Souvent, quand on rencontre ce genre de probème, c'est à dire que la
taille de l'exe varie dans un rapport 1 à 10 (voire bien plus) entre deux compilos ou deux compilations, la solution est dans la quantité de trucs liés statiquement à l'appli. On doit bien entendu bien positionner ses switches pour obtenir une release correcte, et éventuellement utiliser strip, dont l'effet sera d'autant plus minime que la relesase aura été bien construite. Je suis à peu près certain d'avoir lu que pour les portages Gcc sous Windows, la STL était liée statiquement en entier (ou en trop grande partie). Pour des questions de licence ? Toujours en est-il que si c'est bien le cas, vous auriez au moins trois solutions: - Changer de compilateur, par exemple ce que propose Microsoft en téléchargement libre. Puisque vos applis sont liées à Windows, c'est peut-être possible. - Faire du C (en quelque sorte), c'est à dire ne pas inclure et utiliser iostream et tout le bataclan. - Si l'application doit grossir, admettre que le débours, fixe et de l'ordre de 300 à 500 ko, ne va pas augmenter et donc devenir supportable.
-- Pour répondre directement: enlever une lettre sur deux wwaannaaddoooo -> wanadoo
Pierre Maurette
Bonjour,
J'ai juste un petit probleme et j'ai beau chercher sur le net, je ne
trouve pas de reponce...
Je compile un prog simple utilsant WIN32API, prog qui ne créé qu'une
toute petite fenetre avec 4 controle (3 textbox et un bouton).
Je compile tres bien, mais voila, mon prog fait plus de 600ko.
J'ai fait des test et aparement des que j'utilise la STL, mon prog
"gonfle" d'un coup!!!
J'ai lut quelque part que c'est du au fait que STL est compiler en mode
debug....
En faite comment faire pour compiler mon prog en Release pour qu'il
prenne une place raisonnable (moin de 100ko je suppose)???
Souvent, quand on rencontre ce genre de probème, c'est à dire que la
taille de l'exe varie dans un rapport 1 à 10 (voire bien plus) entre
deux compilos ou deux compilations, la solution est dans la quantité de
trucs liés statiquement à l'appli.
On doit bien entendu bien positionner ses switches pour obtenir une
release correcte, et éventuellement utiliser strip, dont l'effet sera
d'autant plus minime que la relesase aura été bien construite.
Je suis à peu près certain d'avoir lu que pour les portages Gcc sous
Windows, la STL était liée statiquement en entier (ou en trop grande
partie). Pour des questions de licence ?
Toujours en est-il que si c'est bien le cas, vous auriez au moins trois
solutions:
- Changer de compilateur, par exemple ce que propose Microsoft en
téléchargement libre. Puisque vos applis sont liées à Windows, c'est
peut-être possible.
- Faire du C (en quelque sorte), c'est à dire ne pas inclure et
utiliser iostream et tout le bataclan.
- Si l'application doit grossir, admettre que le débours, fixe et de
l'ordre de 300 à 500 ko, ne va pas augmenter et donc devenir
supportable.
--
Pour répondre directement: enlever une lettre sur deux
wwaannaaddoooo -> wanadoo
J'ai juste un petit probleme et j'ai beau chercher sur le net, je ne trouve pas de reponce...
Je compile un prog simple utilsant WIN32API, prog qui ne créé qu'une toute petite fenetre avec 4 controle (3 textbox et un bouton).
Je compile tres bien, mais voila, mon prog fait plus de 600ko.
J'ai fait des test et aparement des que j'utilise la STL, mon prog "gonfle" d'un coup!!!
J'ai lut quelque part que c'est du au fait que STL est compiler en mode debug....
En faite comment faire pour compiler mon prog en Release pour qu'il prenne une place raisonnable (moin de 100ko je suppose)??? Souvent, quand on rencontre ce genre de probème, c'est à dire que la
taille de l'exe varie dans un rapport 1 à 10 (voire bien plus) entre deux compilos ou deux compilations, la solution est dans la quantité de trucs liés statiquement à l'appli. On doit bien entendu bien positionner ses switches pour obtenir une release correcte, et éventuellement utiliser strip, dont l'effet sera d'autant plus minime que la relesase aura été bien construite. Je suis à peu près certain d'avoir lu que pour les portages Gcc sous Windows, la STL était liée statiquement en entier (ou en trop grande partie). Pour des questions de licence ? Toujours en est-il que si c'est bien le cas, vous auriez au moins trois solutions: - Changer de compilateur, par exemple ce que propose Microsoft en téléchargement libre. Puisque vos applis sont liées à Windows, c'est peut-être possible. - Faire du C (en quelque sorte), c'est à dire ne pas inclure et utiliser iostream et tout le bataclan. - Si l'application doit grossir, admettre que le débours, fixe et de l'ordre de 300 à 500 ko, ne va pas augmenter et donc devenir supportable.
-- Pour répondre directement: enlever une lettre sur deux wwaannaaddoooo -> wanadoo
Pierre Maurette
tonton
condo4 wrote:
Bonjour,
J'ai juste un petit probleme et j'ai beau chercher sur le net, je ne trouve pas de reponce...
Etonnant, ca revient toutes les semaines sur la liste mingw-users
http://mingw.org/mingwfaq.shtml#faq-C++size
Je compile un prog simple utilsant WIN32API, prog qui ne créé qu'une toute petite fenetre avec 4 controle (3 textbox et un bouton).
Je compile tres bien, mais voila, mon prog fait plus de 600ko.
J'ai fait des test et aparement des que j'utilise la STL, mon prog "gonfle" d'un coup!!!
J'ai lut quelque part que c'est du au fait que STL est compiler en mode debug....
non. La version debug de libstdc++ ajoute des tests supplentaires, et ce n'est pas cette version qui est livrée par défaut
En faite comment faire pour compiler mon prog en Release pour qu'il prenne une place raisonnable (moin de 100ko je suppose)???
g++ -s -o machin.exe truc.o
ou
strip -s machin.exe
Merci @+Fab
condo4 wrote:
Bonjour,
J'ai juste un petit probleme et j'ai beau chercher sur le net, je ne
trouve pas de reponce...
Etonnant, ca revient toutes les semaines sur la liste mingw-users
http://mingw.org/mingwfaq.shtml#faq-C++size
Je compile un prog simple utilsant WIN32API, prog qui ne créé qu'une
toute petite fenetre avec 4 controle (3 textbox et un bouton).
Je compile tres bien, mais voila, mon prog fait plus de 600ko.
J'ai fait des test et aparement des que j'utilise la STL, mon prog
"gonfle" d'un coup!!!
J'ai lut quelque part que c'est du au fait que STL est compiler en mode
debug....
non. La version debug de libstdc++ ajoute des tests supplentaires, et ce
n'est pas cette version qui est livrée par défaut
En faite comment faire pour compiler mon prog en Release pour qu'il
prenne une place raisonnable (moin de 100ko je suppose)???
Sachant que tout ces executables font a même chose (affiche "HelloWorld") n'y a-t-il pas des octets de gaspillé???
En plus, j'ai l'impression que Gcc est beaucoup moins gouramand lorsque l'on utilise les library du C par rapport a VC7, mais tout s'inverse en C++, et pas a la meme echelle!!! 266 240o contre 73 728o, on trouve quand même une grosse difference!! Je veut bien admettre que cette difference diminue lorsque le programme grossi, mais si mon but est de faire des toute petite application, la taille perdu n'est pas negligeable.
Autre petite question, mais alors, comment StartupXP par exemple, si vous connaissez, fait pour tenire dans 77 824o alors qu'il utilise des fenetre, des onglets....
Y'a un truc qui m'échappe dans la programmation......
@+Fab
Merci beaucoup, j'ai reussi a reduire la taille de mon prog grace à
votre aide.
Je suis passé de 947ko a 346ko
Un truc me tracasse toujours:
PROG1:
#include <cstdio>
int main(){
printf("HelloWorld");
return 0;
}
PROG2:
#include <iostream>
int main(){
std::cout<<"HelloWorld";
return 0;
}
Je compile avec Gcc sans strip: GCC
Je compile avec Gcc et je strip: GCS
Je compile avec Visual C++ : VC7
Sachant que tout ces executables font a même chose (affiche
"HelloWorld") n'y a-t-il pas des octets de gaspillé???
En plus, j'ai l'impression que Gcc est beaucoup moins gouramand lorsque
l'on utilise les library du C par rapport a VC7, mais tout s'inverse en
C++, et pas a la meme echelle!!!
266 240o contre 73 728o, on trouve quand même une grosse difference!!
Je veut bien admettre que cette difference diminue lorsque le programme
grossi, mais si mon but est de faire des toute petite application, la
taille perdu n'est pas negligeable.
Autre petite question, mais alors, comment StartupXP par exemple, si
vous connaissez, fait pour tenire dans 77 824o alors qu'il utilise des
fenetre, des onglets....
Y'a un truc qui m'échappe dans la programmation......
Sachant que tout ces executables font a même chose (affiche "HelloWorld") n'y a-t-il pas des octets de gaspillé???
En plus, j'ai l'impression que Gcc est beaucoup moins gouramand lorsque l'on utilise les library du C par rapport a VC7, mais tout s'inverse en C++, et pas a la meme echelle!!! 266 240o contre 73 728o, on trouve quand même une grosse difference!! Je veut bien admettre que cette difference diminue lorsque le programme grossi, mais si mon but est de faire des toute petite application, la taille perdu n'est pas negligeable.
Autre petite question, mais alors, comment StartupXP par exemple, si vous connaissez, fait pour tenire dans 77 824o alors qu'il utilise des fenetre, des onglets....
Y'a un truc qui m'échappe dans la programmation......
Il y a des chances pour que le linker de gcc optimise mal : certaines fonctions restent dans l'exécutable alors qu'elles ne sont jamais appelées.
J'imagine qu'à l'heure de l'ADSL, et alors qu'un PC de base est vendu avec 120 Go de disque dur et pas de lecteur de disquettes, plus personne ne se préoccupe de la taille des exécutables...
On 25 Jul 2005 05:27:06 -0700, "condo4" <c4@saint-pal.com>:
Il y a des chances pour que le linker de gcc optimise mal : certaines
fonctions restent dans l'exécutable alors qu'elles ne sont jamais
appelées.
J'imagine qu'à l'heure de l'ADSL, et alors qu'un PC de base est vendu
avec 120 Go de disque dur et pas de lecteur de disquettes, plus
personne ne se préoccupe de la taille des exécutables...
Il y a des chances pour que le linker de gcc optimise mal : certaines fonctions restent dans l'exécutable alors qu'elles ne sont jamais appelées.
J'imagine qu'à l'heure de l'ADSL, et alors qu'un PC de base est vendu avec 120 Go de disque dur et pas de lecteur de disquettes, plus personne ne se préoccupe de la taille des exécutables...
Arnaud Meurgues
Fabien LE LEZ wrote:
J'imagine qu'à l'heure de l'ADSL, et alors qu'un PC de base est vendu avec 120 Go de disque dur et pas de lecteur de disquettes, plus personne ne se préoccupe de la taille des exécutables...
Déjà qu'avant... Je ne sais pas si quelqu'un a déjà regardé la taille d'un Hello World écrit en Eiffel...
Arnaud
Fabien LE LEZ wrote:
J'imagine qu'à l'heure de l'ADSL, et alors qu'un PC de base est vendu
avec 120 Go de disque dur et pas de lecteur de disquettes, plus
personne ne se préoccupe de la taille des exécutables...
Déjà qu'avant...
Je ne sais pas si quelqu'un a déjà regardé la taille d'un Hello World
écrit en Eiffel...
J'imagine qu'à l'heure de l'ADSL, et alors qu'un PC de base est vendu avec 120 Go de disque dur et pas de lecteur de disquettes, plus personne ne se préoccupe de la taille des exécutables...
Déjà qu'avant... Je ne sais pas si quelqu'un a déjà regardé la taille d'un Hello World écrit en Eiffel...
Arnaud
Fabien LE LEZ
On Mon, 25 Jul 2005 15:03:38 +0200, Arnaud Meurgues :
Je ne sais pas si quelqu'un a déjà regardé la taille d'un Hello World écrit en Eiffel...
À l'opposé, un "Hello World!" prend 12 octets en PHP ;-) [Bon, évidemment, si on compte l'interpréteur, ça fait un peu plus...]
On Mon, 25 Jul 2005 15:03:38 +0200, Arnaud Meurgues
<news.arnaud@meurgues.non.fr.invalid>:
Je ne sais pas si quelqu'un a déjà regardé la taille d'un Hello World
écrit en Eiffel...
À l'opposé, un "Hello World!" prend 12 octets en PHP ;-)
[Bon, évidemment, si on compte l'interpréteur, ça fait un peu plus...]
On Mon, 25 Jul 2005 15:03:38 +0200, Arnaud Meurgues :
Je ne sais pas si quelqu'un a déjà regardé la taille d'un Hello World écrit en Eiffel...
À l'opposé, un "Hello World!" prend 12 octets en PHP ;-) [Bon, évidemment, si on compte l'interpréteur, ça fait un peu plus...]
Arnaud Meurgues
Fabien LE LEZ wrote:
Je ne sais pas si quelqu'un a déjà regardé la taille d'un Hello World écrit en Eiffel... À l'opposé, un "Hello World!" prend 12 octets en PHP ;-)
[Bon, évidemment, si on compte l'interpréteur, ça fait un peu plus...]
Je connais un mec qui s'était amusé à écrire un compilateur (sur Amiga) avec la contrainte qu'il devait faire moins de 1ko. Il avait donc écrit un compilateur de 1023 octets avec un langage adhoc (instructions monocaractère, mais avec lambda).
Et c'était un exécutable indépendant !
Arnaud
Fabien LE LEZ wrote:
Je ne sais pas si quelqu'un a déjà regardé la taille d'un Hello World
écrit en Eiffel...
À l'opposé, un "Hello World!" prend 12 octets en PHP ;-)
[Bon, évidemment, si on compte l'interpréteur, ça fait un peu plus...]
Je connais un mec qui s'était amusé à écrire un compilateur (sur Amiga)
avec la contrainte qu'il devait faire moins de 1ko. Il avait donc écrit
un compilateur de 1023 octets avec un langage adhoc (instructions
monocaractère, mais avec lambda).
Je ne sais pas si quelqu'un a déjà regardé la taille d'un Hello World écrit en Eiffel... À l'opposé, un "Hello World!" prend 12 octets en PHP ;-)
[Bon, évidemment, si on compte l'interpréteur, ça fait un peu plus...]
Je connais un mec qui s'était amusé à écrire un compilateur (sur Amiga) avec la contrainte qu'il devait faire moins de 1ko. Il avait donc écrit un compilateur de 1023 octets avec un langage adhoc (instructions monocaractère, mais avec lambda).
Et c'était un exécutable indépendant !
Arnaud
Arnaud Meurgues
Arnaud Meurgues wrote:
un compilateur de 1023 octets avec un langage adhoc (instructions
Oups. Le compilo faisait exactement 1024 octets. Pardon.
http://wouter.fov120.com/false/index.html
-- Arnaud
Arnaud Meurgues wrote:
un compilateur de 1023 octets avec un langage adhoc (instructions
Oups. Le compilo faisait exactement 1024 octets. Pardon.
un compilateur de 1023 octets avec un langage adhoc (instructions
Oups. Le compilo faisait exactement 1024 octets. Pardon.
http://wouter.fov120.com/false/index.html
-- Arnaud
tonton
This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enig994381B45F9A343157BE8F88 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
condo4 wrote:
Merci beaucoup, j'ai reussi a reduire la taille de mon prog grace à votre aide. Je suis passé de 947ko a 346ko
[snip]
Sachant que tout ces executables font a même chose (affiche "HelloWorld") n'y a-t-il pas des octets de gaspillé???
En plus, j'ai l'impression que Gcc est beaucoup moins gouramand lorsque l'on utilise les library du C par rapport a VC7, mais tout s'inverse en C++, et pas a la meme echelle!!!
VC7 utilise des dll pour le c et c++ qui sont livrées par défaut avec windows. VC7.1 utilise des dll différentes pour le c et le c++ (msvcrt71.dll et je sait plus quoi pour le c++), qui doivent etre livrées avec le prog s i l'os de destination n'est pas XP GCC n'utilise pas de dll pour le c++, tout est intégré dans l'application. Par contre pour le c il utilise la meme dll que vc7 (msvcrt.dll)
266 240o contre 73 728o, on trouve quand même une grosse difference!! Je veut bien admettre que cette difference diminue lorsque le programme grossi, mais si mon but est de faire des toute petite application, la taille perdu n'est pas negligeable.
Si la taille est un problème, alors on peut compresser l'exe avec upx
(http://upx.sf.net) par exemple. De nombreux virus sont d'ailleurs compressés pour en réduire la taille
Autre petite question, mais alors, comment StartupXP par exemple, si vous connaissez, fait pour tenire dans 77 824o alors qu'il utilise des fenetre, des onglets....
Y'a un truc qui m'échappe dans la programmation......
Il y a encore des personnes qui utilisent l'asm pour faire des progs ...
This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enig994381B45F9A343157BE8F88
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
condo4 wrote:
Merci beaucoup, j'ai reussi a reduire la taille de mon prog grace à
votre aide.
Je suis passé de 947ko a 346ko
[snip]
Sachant que tout ces executables font a même chose (affiche
"HelloWorld") n'y a-t-il pas des octets de gaspillé???
En plus, j'ai l'impression que Gcc est beaucoup moins gouramand lorsque
l'on utilise les library du C par rapport a VC7, mais tout s'inverse en
C++, et pas a la meme echelle!!!
VC7 utilise des dll pour le c et c++ qui sont livrées par défaut avec
windows.
VC7.1 utilise des dll différentes pour le c et le c++ (msvcrt71.dll et
je sait plus quoi pour le c++), qui doivent etre livrées avec le prog s i
l'os de destination n'est pas XP
GCC n'utilise pas de dll pour le c++, tout est intégré dans
l'application. Par contre pour le c il utilise la meme dll que vc7
(msvcrt.dll)
266 240o contre 73 728o, on trouve quand même une grosse difference!!
Je veut bien admettre que cette difference diminue lorsque le programme
grossi, mais si mon but est de faire des toute petite application, la
taille perdu n'est pas negligeable.
Si la taille est un problème, alors on peut compresser l'exe avec upx
(http://upx.sf.net) par exemple. De nombreux virus sont d'ailleurs
compressés pour en réduire la taille
Autre petite question, mais alors, comment StartupXP par exemple, si
vous connaissez, fait pour tenire dans 77 824o alors qu'il utilise des
fenetre, des onglets....
Y'a un truc qui m'échappe dans la programmation......
Il y a encore des personnes qui utilisent l'asm pour faire des progs ...
This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enig994381B45F9A343157BE8F88 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
condo4 wrote:
Merci beaucoup, j'ai reussi a reduire la taille de mon prog grace à votre aide. Je suis passé de 947ko a 346ko
[snip]
Sachant que tout ces executables font a même chose (affiche "HelloWorld") n'y a-t-il pas des octets de gaspillé???
En plus, j'ai l'impression que Gcc est beaucoup moins gouramand lorsque l'on utilise les library du C par rapport a VC7, mais tout s'inverse en C++, et pas a la meme echelle!!!
VC7 utilise des dll pour le c et c++ qui sont livrées par défaut avec windows. VC7.1 utilise des dll différentes pour le c et le c++ (msvcrt71.dll et je sait plus quoi pour le c++), qui doivent etre livrées avec le prog s i l'os de destination n'est pas XP GCC n'utilise pas de dll pour le c++, tout est intégré dans l'application. Par contre pour le c il utilise la meme dll que vc7 (msvcrt.dll)
266 240o contre 73 728o, on trouve quand même une grosse difference!! Je veut bien admettre que cette difference diminue lorsque le programme grossi, mais si mon but est de faire des toute petite application, la taille perdu n'est pas negligeable.
Si la taille est un problème, alors on peut compresser l'exe avec upx
(http://upx.sf.net) par exemple. De nombreux virus sont d'ailleurs compressés pour en réduire la taille
Autre petite question, mais alors, comment StartupXP par exemple, si vous connaissez, fait pour tenire dans 77 824o alors qu'il utilise des fenetre, des onglets....
Y'a un truc qui m'échappe dans la programmation......
Il y a encore des personnes qui utilisent l'asm pour faire des progs ...