c++ - portable - codeblocks-16.01 mingw-setup.exe download
¿Cómo reducir el tamaño del ejecutable producido por el compilador MinGW g++? (4)
Tengo un programa trivial de C ++ "Hello world" que se compila a un ejecutable de 500 kB mediante el compilador MinGW g ++ en Win XP. Algunos dicen que es causado por la biblioteca iostream y el enlace estático de libstdc ++. Dll .
El uso de la opción del enlazador -s ayudó un poco (reduciendo el tamaño en un 50%), pero solo quedaría satisfecho con <10kB ejecutable. ¿Hay alguna manera de lograr esto usando el compilador MinGW? La portabilidad no es una gran preocupación para mí.
¿Es posible copiar libstdc ++. Dll con el ejecutable utilizando un enlace dinámico? Si es así, ¿cómo lograr esto?
Resuelto: estaba usando MinGW 3.4. Ahora actualicé a la última versión de MinGW 4.6 y el tamaño se redujo en un 90% a 50 kB, con la opción -s incluso a 9 kB, que es totalmente suficiente. De todos modos, gracias a todos por la ayuda. Aquí tienes mis resultados.
C ++ Hello World programa utilizando iostream
MinGW | no options | -s option
------------------------------
3.4 | 500kB | 286 kB
4.6 | 50kB | 9 kB
Banderas a utilizar:
-
-s
como has estado haciendo para quitar los símbolos. -
-lstdc++_s
para especificar la vinculación dinámica conlibstdc++.dll
-
-Os
de optimizar el binario por tamaño.
Por defecto, los enlaces estáticos mingw a libstdc++.a
en Windows.
Tenga en cuenta que el lstdc++_s
solo está en MinGW con GCC> 4.4, creo.
Deberías estar usando -O para la optimización. Agregue "-O {nivel}" a los argumentos de su compilador y se optimizará para la velocidad o el tamaño. Compruebe los documentos para su compilador.
También podría tener símbolos de depuración habilitados. Pelarlos también lo hará más pequeño.
Usar la bandera -Os podría ayudar. Eso optimiza para el tamaño.