c++ - puedo - Librería estática del modo de lanzamiento mucho más grande que la versión en modo depuración
no puedo activar depuracion usb (3)
La diferencia es específicamente debido a la generación de código de tiempo de enlace. Lea el capítulo Generación de código de tiempo de enlace en compiladores: lo que todo programador debe saber sobre las optimizaciones del compilador en MSDN: básicamente dice que con LTCG activado, el compilador produce muchos más datos que están empaquetados en la biblioteca estática para que el enlazador pueda usar eso. Datos adicionales para generar un mejor código de máquina mientras se vincula el archivo ejecutable.
Debido a que tiene desactivado LTCG en la configuración de depuración, la biblioteca producida es notablemente más pequeña ya que no tiene esa información adicional.
hoy descubrí que la biblioteca estática compilada en la que estoy trabajando es mucho más grande en el modo Release que en Debug . Me pareció muy sorprendente, ya que la mayoría de las veces sucede exactamente lo contrario (por lo que puedo decir).
El tamaño en modo de depuración es ligeramente superior a 3 MB (es un proyecto bastante grande), pero en su versión sube a 6,5 MB. ¿Puede alguien decirme cuál podría ser la razón de esto? Estoy usando la configuración habitual de Visual Studio (2008) para un proyecto de biblioteca estática, que no cambió casi nada en la configuración de configuración de compilación. En el lanzamiento, estoy usando / O2 y "Favorecer tamaño o velocidad" está configurado en "Ninguno". ¿Podría el / O2 ("Maximizar la velocidad") hacer que el .lib final sea mucho más grande que la versión de depuración con toda la información de depuración en él?
EDITAR: Información adicional:
Depurar:
- Optimización de todo el programa: No
- Habilitar enlace de nivel de función: No
Lanzamiento:
- optimización de todo el programa: habilitar la generación de código de tiempo de enlace
- Habilitar enlace de nivel de función: Sí
Personalmente, nunca he visto un PDB de lanzamiento más grande que un PDB de depuración. La misma oferta para las bibliotecas.
La optimización podría ser el problema aquí, especialmente las funciones en inline
creadas automáticamente serán más grandes pero más rápidas en el lanzamiento que en la depuración.