Ich habe einen Projektbaum in Xcode, der so aussieht: AppProject hängt von ObjcWrapper ab, der wiederum von PureCppLib abhängt. ObjcWrapper und PureCppLib sind statische Bibliotheksprojekte. Kombiniert erreichen alle Quellen kaum 15 k Codezeilen, und wie erwartet ist die Größe der resultierenden Binärdatei ungefähr 750 KB im Freigabemodus und etwas über 1 MB im Debugmodus. So weit, ist es gut.Größe der statischen Bibliotheken generiert von Xcode
ObjcWraper.a und PureCppLib.a sind jedoch in jedem Modus über 6 MB. Die erste Frage ist, warum es so ist. Aber noch wichtiger: Wie kann ich sicherstellen, dass diese statischen Bibliotheken nicht den gesamten Quellcode oder Teile davon enthalten?
Vielen Dank im Voraus!
Suchen Sie nach 'toten Code stripping'. Nach meiner Erfahrung wird der Compileroptimierer (Veröffentlichungsmodus) keinen Code aus Bibliotheken enthalten, auf den Ihre Anwendung nicht verweist. Ich bin nicht in der Lage, für Sie zu googeln, also versuchen Sie es zuerst. Ich werde wieder antworten, sobald ich besser platziert bin. – gnasher
Kenny, Der tote Code scheint hier nicht das Problem zu sein. Die Bibliothek, die ich PureCppLib genannt habe, plus entsprechende Wrapper, kompiliert 500-900Kb beim Gewinnen, gewinnt mobile, macosx und android ndk, wenn sie zu einer dynamischen Lib kompiliert wird (was bedeutet, dass sogar der meiste tote Code verknüpft wird). Aber auf dem iPhone sind dynamische Bibliotheken nicht erlaubt, also muss ich eine statische lib verteilen - und 6Mb sieht einfach nicht richtig aus. – user325014
@ shaft80: dynamische libs können einen toten Code entfernen (und werden sehr aggressive dead code Stripping mit einigen Linkern haben, wenn eine exportierte Symboldatei verwendet wird, zum Beispiel); Das könnte sicherlich das Problem sein. –