2010-04-24 5 views
5

J'ai une arborescence de projet dans Xcode qui ressemble à ceci: AppProject dépend de ObjcWrapper qui dépend à son tour de PureCppLib. ObjcWrapper et PureCppLib sont des projets de bibliothèque statiques. Combiné, toutes les sources atteignent à peine 15k lignes de code, et, comme prévu, la taille du binaire résultant est d'environ 750Kb en mode release et légèrement supérieure à 1Mb en mode debug. Jusqu'ici tout va bien. Toutefois, ObjcWraper.a et PureCppLib.a dépassent 6 Mo dans chacun de ces modes. Donc, la première question est pourquoi est-ce le cas. Mais plus important encore, comment puis-je m'assurer que ces bibliothèques statiques n'incluent pas des parties ou la totalité du code source?Taille des bibliothèques statiques générées par Xcode

Merci d'avance!

+0

Rechercher 'décapage du code mort'. Dans mon expérience l'optimiseur de compilateur (le mode de libération) n'inclura pas le code des bibliothèques qui n'est pas référencé par votre application. Je ne suis pas dans un endroit pour faire le googling pour vous, alors essayez d'abord. Je vais répondre à nouveau une fois que je serai mieux placé. – gnasher

+0

Kenny, Le code mort ne semble pas être le problème ici. La bibliothèque que j'ai appelée PureCppLib, plus les wrappers appropriés, compile à 500-900Kb sur win, win mobile, macosx et android ndk si compile en une lib dynamique (ce qui signifie que même la plupart du code mort est lié). Mais sur iPhone, les bibliothèques dynamiques ne sont pas autorisées, donc j'ai besoin de distritbute une librairie statique - et 6Mb ne semble pas juste. – user325014

+0

@ shaft80: les librairies dynamiques peuvent avoir un effacement de code mort (et auront un décapage de code mort très agressif avec certains linkers si un fichier symbole exporté est utilisé, par exemple); cela pourrait certainement être le problème. –

Répondre

10

Vous souhaitez probablement créer votre bibliothèque statique sans symboles de débogage. Recherchez le paramètre de génération "Générer des symboles de débogage" pour la cible de la bibliothèque statique dans la configuration que vous distribuez, et assurez-vous qu'elle n'est pas cochée.

Questions connexes