OVH Cloud OVH Cloud

Compilation avec MinGW

13 réponses
Avatar
condo4
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=E9=E9 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)???

Merci
@+Fab

3 réponses

1 2
Avatar
Martinez Jerome
tonton wrote:

VC7 utilise des dll pour le c et c++ qui sont livrées par défaut avec
windows.


Depend des options de compilation : il peut utiliser une bibliotheque
statique, donc pas de dépendance de DLL.

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 si
l'os de destination n'est pas XP


idem.
Tu n'es pas forcé de livrer des DLL si tu compiles correctement ton
programme (hop, ca alege le programme entier, car la DLL est grosse...)


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 ...


Il y a encore (et ca ne me choque pas) des personnes qui utilisent les
bibliotheques win32 uniquement, sans bibliotheque standart C ou C++,
donc programme limité au minimum.
(+UPX bien sur...)


Avatar
kanze
Fabien LE LEZ wrote:
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...]


En fait, à cet égard, je crois qu'on pourrait considérer
l'interpréteur un peu comme un objet chargé dynamiquement, non.
Il ne se trouve pas dans le fichier exécutable de ton programme,
mais pour que ton programme tourne, il faut qu'il soit présente
quelque part sur le système, et pendant que ton programme
tourne, il est bien en mémoire.

Et en fait, j'imagine que la raison principale derrière ces
différences, c'est que VC++ utilise d'avantage d'objets
dynamiques, où g++ fait de l'édition de liens statiques. (Sous
Linux, avec g++ 3.4.0, helloworld passe de 7 Ko à 4 Mo en
précisant static. Pour dire que ça peut faire une différence.)

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Avatar
Cyrille

PROG1 (C):
GCC = 15 663o
GCS = 5 632o
VC7 = 36 864o

PROG2 (C++):
GCC = 474 990o
GCS = 266 240o
VC7 = 73 728o


Ces chiffres ne sont pas très parlants si tu ne nous dit pas avec
quelles options tu compiles.
En tout cas pour VC, on peut obtenir des choses beaucoup moins grosses.
Avec VC8 beta, j'obtiens 44 544 octets en liant statiquement la
librairie MFC et 5 632 octets en liant dynamiquement. (oui, je sais
qu'il n'y a rien de MFC dans le programme, je n'ai pas d'explications
moi-même.)

Voir cette page pour quelques trucs: http://www.catch22.net/tuts/minexe.asp
(il y a des techniques un peu extrêmes, mais ça vaut le coup de le lire)

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....


Il utilise des DLL?

--
"Don't quote me on this." ~ Oscar Wilde

1 2