2010-04-24 13 views
5

Tengo un árbol de proyectos en Xcode que se ve así: AppProject depende de ObjcWrapper, que a su vez depende de PureCppLib. ObjcWrapper y PureCppLib son proyectos de biblioteca estáticos. Combinadas, todas las fuentes apenas alcanzan las 15k líneas de código, y, como se esperaba, el tamaño del binario resultante es de aproximadamente 750 Kb en modo de lanzamiento y ligeramente superior a 1 Mb en modo de depuración. Hasta aquí todo bien.Tamaño de las bibliotecas estáticas generadas por Xcode

Sin embargo, ObjcWraper.a y PureCppLib.a son más de 6Mb cada uno en cualquier modo. Entonces la primera pregunta es por qué es así. Pero, lo que es más importante, ¿cómo puedo asegurarme de que esas bibliotecas estáticas no incluyan partes o todo el código fuente?

¡Gracias de antemano!

+0

Busque "eliminación de código muerto". En mi experiencia, el optimizador del compilador (modo de lanzamiento) no incluirá el código de las bibliotecas a las que su aplicación no hace referencia. No estoy en un lugar para buscar en Google, así que pruébalo primero. Responderé una vez que esté mejor ubicado. – gnasher

+0

Kenny, El código de error no parece ser el problema aquí. La biblioteca que llamé PureCppLib, más las envolturas apropiadas, compila a 500-900 Kb en win, win mobile, macosx y android ndk si se compila en una lib dinámica (lo que significa que incluso la mayoría de los códigos muertos se vinculan). Pero en iPhone las bibliotecas dinámicas no están permitidas, así que necesito distribuir una lib estática, y 6Mb simplemente no se ve bien. – user325014

+0

@ shaft80: las librerías dinámicas pueden tener eliminación de código muerto (y tendrán un desforrado de código muerto muy agresivo con algunos vinculadores si se utiliza un archivo de símbolos exportado, por ejemplo); este ciertamente podría ser el problema. –

Respuesta

10

Probablemente desee construir su biblioteca estática sin símbolos de depuración. Busque la configuración de generación "Generar símbolos de depuración" para el objetivo de la biblioteca estática en la Configuración que distribuye y asegúrese de que esté desmarcada.

Cuestiones relacionadas