Pregunta ¿Cómo reducir el tamaño del ejecutable producido por el compilador Mininary G ++?


Tengo un trivial programa "Hello world" de C ++ que se compila a 500kB ejecutable por el compilador MinGW g ++ bajo Win XP. Algunos dicen que es causado por iostream biblioteca y enlace estático de libstdc ++. dll.

Utilizando -s La opción del compilador ayudó un poco (reduciendo el tamaño del 50%), pero solo me satisfizo por el ejecutable de <10kB. ¿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 mediante el enlace dinámico? Si es así, ¿cómo lograr esto?


Resuelto Estaba usando MinGW 3.4. Ahora actualicé al último MinGW 4.6 y el tamaño disminuyó en un 90% a 50kB, con -s opción incluso a 9kB, que es totalmente suficiente. De todos modos, gracias a todos por su ayuda. Aquí tienes mis resultados

C ++ Hola Mundo programa que usa iostream

MinGW | no options | -s option
------------------------------
3.4   | 500kB      | 286 kB
4.6   | 50kB       |   9 kB

16
2017-11-01 21:40


origen


Respuestas:


Banderas para usar:

  • -s como has estado haciendo para quitar los símbolos
  • -lstdc++_s para especificar enlaces dinámicos contra el libstdc++.dll
  • -Os para optimizar el binario para el tamaño.

Por defecto mingw enlaces estáticos a libstdc++.a en Windows.

Tenga en cuenta que lstdc++_s la bandera está solo en MinGW con GCC> 4.4, creo.


11
2017-11-01 21:48



Dar strip y UPX un intento.


5
2017-11-01 21:45



Usar el indicador -Os podría ayudar. Eso optimiza para el tamaño.


2
2017-11-01 21:47



Debería usar -O para la optimización. Agregue "-O {level}" a sus argumentos del compilador y optimizará la velocidad o el tamaño. Verifique los documentos para su compilador.

También podría tener habilitados los símbolos de depuración. Pelarlos también lo hará más pequeño.


0
2017-11-01 21:45