Comment réduire la taille de l'executable produite par MinGW compilateur g++?

J'ai une simple "Hello world", un programme C++ est compilé en 500kB exécutable par MinGW compilateur g++ sous Win XP.
Certains disent que c'est causé par iostream de la bibliothèque et de lien statique de libstdc++.dll.

À l'aide de -s linker option a aidé un peu (réduction de 50% de la taille), mais je serait satisfaite que par <10kB exécutable. Est-il possible que la façon de réaliser cela en utilisant le compilateur MinGW? La portabilité n'est pas une grande préoccupation pour moi.

Est-il possible de copier libstdc++.dll avec l'exécutable à l'aide de la liaison dynamique? Si oui, comment faire?


Résolu: j'ai été en utilisant MinGW 3.4. Maintenant, j'ai mis à jour pour la dernière MinGW 4.6 et la taille a diminué de 90% à 50 ko, avec -s option, même à 9 ko, ce qui est amplement suffisant. De toute façon - je remercie tout le monde pour obtenir de l'aide. Ici, vous allez mes résultats

C++ Bonjour tout le Monde programme à l'aide iostream

MinGW | no options | -s option
------------------------------
3.4   | 500kB      | 286 kB
4.6   | 50kB       |   9 kB
Utilisation -shared-libstdc++ pour compiler et lier dynamiquement contre libstdc++.dll, et -Os pour optimiser le binaire pour la taille.
Bien que l'onu, le C++, vous pouvez essayer de printf(). Je ne suis pas sûr de savoir comment beaucoup de ces mêmes dépendances qu'il partage avec la bibliothèque iostream. De sorte qu'il peut ou ne peut pas faire plus petit.
g++: error: unrecognized option '-shared-libstdc++' en utilisant MinGW 4.6
Oui, je pense que dans GCC 4.6, votre générés les fichiers binaires sont en conformité avec la taille normale prévue par une commune libstdc++ sur Linux avec GCC 4.6 un simple 'bonjour le monde' application est de 8 KO pour moi. De MinGW GCC 3.4 généré tailles sont que les grands puisqu'il n'y a pas de notion de partage des libstdc++ encore.
Sous les versions ultérieures de MinGW où les bibliothèques sont liées de façon dynamique, la liaison statique des bibliothèques standard peut être forcé avec -static-libgcc (C) ou -static-libstdc++ (C++).

OriginalL'auteur Jan Turoň | 2011-11-01