Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2993 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Taille d'éxécutable sous MinGW

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

Taille d'éxécutable sous MinGW

n°219620
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-09-2002 à 18:06:45  profilanswer
 

:hello:
 
Une question rapide : je viens d'installer MinGW car je dois porter un projet sous linux. MinGW me permettra de tester différentes modifs sous Win avant de les porter sous Linux. J'ai essayé de compiler le code tout con suivant :
 

Code :
  1. #include <iostream>
  2. using namespace std;
  3. int main(void)
  4. {
  5. cout << "test\r\n";
  6. return 0;
  7. }


 
Taille de l'éxécutable a.exe : 439 Ko !!!
 
Pour compiler, rien de plus simple :
g++ toto.cpp
 
C'est normal un éxécutable aussi gros ? :??:


---------------
J'ai un string dans l'array (Paris Hilton)
mood
Publicité
Posté le 24-09-2002 à 18:06:45  profilanswer
 

n°219626
ITM
Avatar peint à la main
Posté le 24-09-2002 à 18:11:47  profilanswer
 

Attends, j'essaye chez moi et je te dis...


---------------
iteme.free.fr | Mon feedback
n°219628
ITM
Avatar peint à la main
Posté le 24-09-2002 à 18:13:54  profilanswer
 

Hum... 130Ko chez moi.
Ca parait beaucoup quand même !


---------------
iteme.free.fr | Mon feedback
n°219630
ITM
Avatar peint à la main
Posté le 24-09-2002 à 18:15:22  profilanswer
 

"L'équivalent" en C fait juste 10Ko compilé


---------------
iteme.free.fr | Mon feedback
n°219631
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-09-2002 à 18:16:49  profilanswer
 

ITM a écrit a écrit :

Hum... 130Ko chez moi.
Ca parait beaucoup quand même !




Tu compiles comme moi ?  :??:  
Serait-ce parce que je suis sous NT 4.0 SP6 ?


---------------
J'ai un string dans l'array (Paris Hilton)
n°219634
ITM
Avatar peint à la main
Posté le 24-09-2002 à 18:22:38  profilanswer
 

Bein ouais:
J'ai fait : "g++ toto.cpp"
Il m'a bel et bien fait un exe de 130Ko.
Je ne peux pas te dire pourquoi cette difference de taille!
Sinon, J'utilise gcc 2.95.3-6 (special)


Message édité par ITM le 24-09-2002 à 18:22:54

---------------
iteme.free.fr | Mon feedback
n°219635
nicolasm
Posté le 24-09-2002 à 18:23:09  profilanswer
 

Harkonnen a écrit a écrit :

 
Tu compiles comme moi ?  :??:  
Serait-ce parce que je suis sous NT 4.0 SP6 ?
 




Avez vous supprimez les options de debugger infos?Ca bouffe beaucoup ces petites choses la!

n°219639
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-09-2002 à 18:25:26  profilanswer
 

ITM a écrit a écrit :

Bein ouais:
J'ai fait : "g++ toto.cpp"
Il m'a bel et bien fait un exe de 130Ko.
Je ne peux pas te dire pourquoi cette difference de taille!
Sinon, J'utilise gcc 2.95.3-6 (special)




Ma version de MinGW (2.0) semble comporter la version 3.2 de GCC, peut être que ça vient de la... je teste


---------------
J'ai un string dans l'array (Paris Hilton)
n°219640
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-09-2002 à 18:26:10  profilanswer
 

nicolasm a écrit a écrit :

 
Avez vous supprimez les options de debugger infos?Ca bouffe beaucoup ces petites choses la!
 




On fait comment ?  :??:


---------------
J'ai un string dans l'array (Paris Hilton)
n°219672
tanguy
Posté le 24-09-2002 à 20:02:38  profilanswer
 

Harkonnen a écrit a écrit :

 
Ma version de MinGW (2.0) semble comporter la version 3.2 de GCC, peut être que ça vient de la... je teste




moi je le sens venir de la ton probleme pourtant normalement tu compiles pas en debug (pas de -g)
 
sinon autre solution, tu specifies -lstdc++ a la compilation ca diminuera la taille de l'exe
 
http://lists.kde.org/?l=kde-core-d [...] 006814&w=2
 
Debug binaries don't grow as much as with the CVS version I tested, but still  
they get twice as big with 3.1 (with the CVS version, it was a factor of 3):
 
debugging version of qt compiled with 2.95.3:
-rwxr-xr-x    1 root     root          28M May 17 11:27 libqt-mt.so.3.0.4
 
and with 3.1:
-rwxr-xr-x    1 root     root          54M May 17 01:05 libqt-mt.so.3.0.4
 
Non-debug builds seem to be comparable in size though.


Message édité par tanguy le 24-09-2002 à 20:05:19
mood
Publicité
Posté le 24-09-2002 à 20:02:38  profilanswer
 

n°219690
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-09-2002 à 20:42:16  profilanswer
 

Gagné !
 
Taille de l'éxécutable avec gcc 2.95 : 46 Ko !
Avec gcc 3.2 : 439 Ko !!!
 
Ca fait quand même beaucoup, comment ça se fait ?  :ouch:  


---------------
J'ai un string dans l'array (Paris Hilton)
n°219830
nicolasm
Posté le 25-09-2002 à 11:13:29  profilanswer
 

Harkonnen a écrit a écrit :

 
On fait comment ?  :??:  




 
Le probleme c que je sais pas sous dev-C++ t as une option a decocher mais sous gcc et g++ peut etre qu avec le --help tu trouveras comment desactiver ca!

n°219903
ITM
Avatar peint à la main
Posté le 25-09-2002 à 13:37:13  profilanswer
 

Harkonnen a écrit a écrit :

Gagné !
 
Taille de l'éxécutable avec gcc 2.95 : 46 Ko !
Avec gcc 3.2 : 439 Ko !!!
 
Ca fait quand même beaucoup, comment ça se fait ?  :ouch:  
 




He 46Ko?
J'en ai 130Ko avec ma version  :??:

n°219908
leneuf22
Posté le 25-09-2002 à 13:42:58  profilanswer
 

ITM : en C compilé avec LCC je fais un exécutable de 3,03 ko :)
(Sans optimisation)

n°219916
Kristoph
Posté le 25-09-2002 à 13:51:02  profilanswer
 

Essaye d'utiliser strip sur l'executable que tu obtiens.

n°220325
Musaran
Cerveaulté
Posté le 26-09-2002 à 02:20:58  profilanswer
 

A titre de comparaison, sous visual C++ 6 sp 5:
 52 Ko en release
221 Ko en debug
 
Au pif, je dirais que des librairies inutilisées sont incluses à tort.


Message édité par Musaran le 26-09-2002 à 02:22:48

---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°220364
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 26-09-2002 à 09:00:52  profilanswer
 

Musaran a écrit a écrit :

Au pif, je dirais que des librairies inutilisées sont incluses à tort.




c bien mon avis aussi, mais lesquelles ? et comment le savoir ?


---------------
J'ai un string dans l'array (Paris Hilton)
n°223633
tanguy
Posté le 04-10-2002 à 17:28:08  profilanswer
 

voila la reponse a ton probleme :
 
> pour ceux qui pleure en voyant les tailles des exe générés par g++ meme en Os, il suffit de rajouter
> "-s -D__GTHREAD_HIDE_WIN32API"
> et on retombe sur des exe tout maigres...
> dans les prochaines versions, cette option sera par défaut
 
http://presencepc.com/sqlforum/for [...] h=&subcat=

n°223639
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 04-10-2002 à 17:37:08  profilanswer
 

Merci moi :jap:


---------------
du bon usage de rand [C] / [C++]
n°223650
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 04-10-2002 à 17:53:38  profilanswer
 

:jap:  :jap:  :love:


---------------
J'ai un string dans l'array (Paris Hilton)
n°223917
tanguy
Posté le 05-10-2002 à 13:23:05  profilanswer
 

Taz@PPC a écrit a écrit :

Merci moi :jap:




 
clair :)
 
t'as trouve ca dans les archives de la mailing-list ?

n°223943
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 05-10-2002 à 15:00:19  profilanswer
 

nan j'ai posé une bug-feature sur sourceforge et les concepteurs m'ont répondu. y plus qu'a attendre...
 
c'est surtout le -s qui a une action significative sur la taille d'executable, l'option pour l'API de windows réduit le temps de compilation.
 
pour debugguer ou profiler, mieux vos compiler sans ses options


---------------
du bon usage de rand [C] / [C++]
n°223949
Kristoph
Posté le 05-10-2002 à 15:41:15  profilanswer
 

-s c'est pour faire un strip de l'executable. Je crois que ca fait la même chose que de faire strip xxxx.exe après l'avoir compilé. Par contre faut pas esperer deboguer la chose après un traitement pareil.

n°223953
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 05-10-2002 à 15:52:30  profilanswer
 

exactement


---------------
du bon usage de rand [C] / [C++]
n°223966
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 05-10-2002 à 17:27:25  profilanswer
 

Effectivement, la taille baisse de manière considérable avec ces options, cependant, tout ça ne nous dit pas :
 
- Pourquoi une telle différence de taille entre la version 2.95 et 3.2 ?
- Pourquoi une telle différence de taille entre g++ et lcc ?


---------------
J'ai un string dans l'array (Paris Hilton)
n°223970
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 05-10-2002 à 18:29:43  profilanswer
 

par ce que dans la 2.95 les  options "-s -D__GTHREAD_HIDE_WIN32API" etait par défaut.
 
quand a lcc, tout depend. si tu compile en -O3 ou -Os onva bien voir
 
pi lcc il fait que du C


Message édité par Taz@PPC le 05-10-2002 à 18:30:21

---------------
du bon usage de rand [C] / [C++]
n°224053
HelloWorld
Salut tout le monde!
Posté le 06-10-2002 à 00:11:49  profilanswer
 

Ouai, dans le doute j'ai fermé ma gueule, mais 3 Ko avec un printf dedans, ca me semble louche ...
Soit la lib standard de LCC est miraculeuse, soit y'a une bonne grosse dll qui traine quelque part ...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°224086
Musaran
Cerveaulté
Posté le 06-10-2002 à 02:06:52  profilanswer
 

Et pourtant on peut en faire des choses en 3103 octets d'instructions.
 
Il me semble que certains compilateurs sont capables de ne pas inclure le code des formats de printf pas utilisés.
Ou alors il a mis un simple puts.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°224097
HelloWorld
Salut tout le monde!
Posté le 06-10-2002 à 05:50:51  profilanswer
 

Citation :

Et pourtant on peut en faire des choses en 3103 octets d'instructions.


 
Comme se lier a crtdll.dll qui fait 145 Ko ...
Ils ont ete malin, ils utilisent la dll de Microsoft qui est installee avec Windows ...
 

Citation :

Ou alors il a mis un simple puts.


 
puts ou printf, il faut initialiser la console (recuperer les handle standards) et si c'est correctement programmé, ca prend deja quelques lignes ca.
Je ne parle pas de l'initialisation du tas etc ... pour des appels eventuels a malloc et consors.
Qui plus est, y'a le int argc, char ** argv à formater.
Ca aussi ca prend pas mal de lignes.
Enfin, le  code de printf (le vrai, pas la version allégée qu'offre Windows) est assez imposant.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°224100
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 06-10-2002 à 10:12:58  profilanswer
 

c'est vrai que printf n'est pas une petite fonction (c'est d'ailleurs pour ca qu'elle a été abandonné en C++ qui offre de E/S plus rapides)
 
outre cette histoire de dll, la perfromance d'un compilateur ne se voit pas en compilant un "Hello World!"
 
Certains compilos crachent directement plusieurs dizaines deko mais apres la taille augmente tout doucement.
 
la prochaine génération de compilateur/lieur devrait etre capable de supprimer le code inutile à la liaison. (certains le font déjà partiellement et sous certaines conditions)
 
sinon, y a "upx --best" et zou...


---------------
du bon usage de rand [C] / [C++]
n°224110
HelloWorld
Salut tout le monde!
Posté le 06-10-2002 à 10:45:10  profilanswer
 

Le fait de sortir le code de printf dans une dll n'influe pas sur les performances.
 
Les dizaines de Ko sont generalements provoque par un link statique de cette dll ainsi que le code necessaire aux exceptions, etc ...
 
Quant aux linker, je crois qu'il s'agit des "smart linker" et que celui de Borland en est un.
 
Pour upx, c'est un autre debat ... qui s'est souvent terminé par "compresser un exe c'est mal" (l'OS ne peut plus effectuer la pagination sur le code)


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°224116
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 06-10-2002 à 11:15:57  profilanswer
 

HelloWorld a écrit a écrit :

Le fait de sortir le code de printf dans une dll n'influe pas sur les performances.
 
Les dizaines de Ko sont generalements provoque par un link statique de cette dll ainsi que le code necessaire aux exceptions, etc ...
 
Quant aux linker, je crois qu'il s'agit des "smart linker" et que celui de Borland en est un.
 
Pour upx, c'est un autre debat ... qui s'est souvent terminé par "compresser un exe c'est mal" (l'OS ne peut plus effectuer la pagination sur le code)




 
chai po il me semble que c'est décompressé et pas exécuter comme ça. de toutes façons, ce n'est pas une solution si ton exe est énorme et fait de tres gros traitements


---------------
du bon usage de rand [C] / [C++]
n°224343
Musaran
Cerveaulté
Posté le 07-10-2002 à 02:58:21  profilanswer
 

HelloWorld a écrit a écrit :

Je ne parle pas de l'initialisation du tas etc ... pour des appels eventuels a malloc et consors.
Qui plus est, y'a le int argc, char ** argv à formater.
...
...ainsi que le code necessaire aux exceptions...



 

HelloWorld a écrit a écrit :

la perfromance d'un compilateur ne se voit pas en compilant un "Hello World!"
Certains compilos crachent directement plusieurs dizaines deko mais apres la taille augmente tout doucement.
...
la prochaine génération de compilateur/lieur devrait etre capable de supprimer le code inutile à la liaison.



 
 
C'est le travail du système compilation/liaison d'inclure ce qui est nécessaire, et pas ce qui ne l'est pas.
Quand un simple "Hello world" qui n'utilise pas les variables d'environnement, ni le tas, ni les exceptions, ni le formatage, se trimbale quand même des wagons de code, inclus des messages d'erreur pour des fonctions inutilisées, des noms du source qui n'ont rien à y faire, et de vastes zones tampons...
Alors je peut pas m'empêcher de penser que si le travail est mal fait à ce stade, il l'est tout autant pour le reste.
 
Cela dit, je suis tout à fait conscient que la taille des exécutables n'est pas un problème pour beaucoup de monde.
Le jour où ça en devient un, le réveil peut être dur.
 
ch'tite contribution: http://www.codeproject.com/tips/ag [...] print=true


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°224350
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 07-10-2002 à 07:04:47  profilanswer
 

cool ton lien (dommage que j'utilise pas VS  :p )


---------------
du bon usage de rand [C] / [C++]
n°224627
leneuf22
Posté le 07-10-2002 à 19:11:14  profilanswer
 

Non, LCC génère des exe vraiment indépendants :)
Pas besoin de DLL !
Vous pouvez essayer par vous même, LCC ne fait que 3.3 mo, (avec les libs et les includes bien entendu)
http://www.cs.virginia.edu/~lcc-win32/
 
En mettant ce code :
#include <stdio.h>
   
int main(void)
{
    printf("test\r\n" );
    return 0;
}
 
Et en compilant :
lc.exe prog.c
 
Ya pas d'entourloupe !
Ce compilateur n'est pas mon préféré pour rien :-)
(LCC est un compilo C, pas de C++)

n°225562
HelloWorld
Salut tout le monde!
Posté le 09-10-2002 à 12:52:49  profilanswer
 

Negatif ...
Je viens de tester.
L'exe utilise msvcrt.dll
Genere le fichier asm pour voir ...
Y'a 2 appels (j'ai meme dessassemble pour verifier) a cette dll :
un premier pour formater les arguments (argc, argv)
un second pour printf
 
On parle bien d'un exe de 3 Ko ... ?
Si ton exe pese plus et que tu t'es demerder a lier la dll en static, je veux bien te croire.
Mais je crois pas que la lib statique de cette dll (faite par MS) vienne avec le compilo (je peux pas verifier la desole)


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°225563
HelloWorld
Salut tout le monde!
Posté le 09-10-2002 à 12:53:58  profilanswer
 

Ce qui est vrai en revanche c'est qu'on est sur que cette dll est presente sur chaque ordi et donc pas besoin de la refourguer ... (sauf si la version change, ce qui a ete recement le cas je crois)


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°225576
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 09-10-2002 à 13:27:32  profilanswer
 

donc gcc reste bien le meilleur compilateur :love:

n°225581
HelloWorld
Salut tout le monde!
Posté le 09-10-2002 à 13:48:19  profilanswer
 

Heu ... on parle de LCC ...
Je sais pas trop ce qu'i vaut en terme de code compile, mais je sais que gcc sous Windows est mal situe ...
 
http://casteyde.christian.free.fr/cpp/benchmarks/


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°225663
ITM
Avatar peint à la main
Posté le 09-10-2002 à 15:48:02  profilanswer
 

Je vois pas pourquoi il serait mal situé sous windows d'après ce que tu postes. C'est même celui qui respecte le plus la norme!


---------------
iteme.free.fr | Mon feedback
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Taille d'éxécutable sous MinGW

 

Sujets relatifs
Ouverture d'une fenetre de taille minime...taille de la police fixe?
taille des fenetres..[C++]recuperer la taille et la date de creation d'un fichier par http?
Taille d un tableau fixé[VC++,MFC] Definir une taille pour dans l'editeur de ressources
Taille d'une msgboxA propos de la taille des cellules dans un tableau
comment recuperer la taille du navigateurPath de l'executable en C++
Plus de sujets relatifs à : Taille d'éxécutable sous MinGW


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR