Comment réduire la taille de l'exécutable produit par MinGW compilateur g++?
j'ai un programme trivial "Hello world" C++ qui est compilé à 500kB exécutable par MinGW g++ compilateur sous Win XP. Certains disent que c'est causé par iostream bibliothèque et lien statique de libstdc++.dll.
en utilisant -s option compilateur aidé un peu (réduction de 50% de la taille), mais je ne serais satisfait que par <10KB exécutable. Y a-t-il un moyen d'y parvenir en utilisant MinGW compiler? La portabilité n'est pas une grande préoccupation pour moi.
Est il est possible de copier libstdc++.dll avec l'exécutable utilisant le lien dynamique? Si oui, comment faire?
Résolu: J'utilisais MinGW 3.4. Maintenant j'ai mis à jour à la dernière MinGW 4.6 et la taille a été réduite de 90% à 50kB, 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++ Hello World programme à l'aide de iostream
MinGW | no options | -s option
------------------------------
3.4 | 500kB | 286 kB
4.6 | 50kB | 9 kB
4 réponses
drapeaux à utiliser:
-s
comme vous l'avez fait pour enlever des symboles-lstdc++_s
pour spécifier dynamiquement un lien aveclibstdc++.dll
-Os
pour optimiser la taille du binaire.
par défaut mingw liens statiques vers libstdc++.a
sur Windows.
notez que le lstdc++_s
drapeau est seulement dans MinGW GCC > 4.4, je crois.
vous devriez utiliser-O pour l'optimisation. Ajoutez" - O{level} " à votre compilateur args et il optimisera pour la vitesse ou la taille. Vérifiez la documentation de votre compilateur.
vous pouvez également activer les symboles de débogage. Les enlever les rendra aussi plus petit.