2010-04-24 11 views
5

Ho un albero di progetto in Xcode simile a questo: AppProject dipende da ObjcWrapper che a sua volta dipende da PureCppLib. ObjcWrapper e PureCppLib sono progetti di librerie statiche. Combinati, tutte le fonti raggiungono a malapena le linee di 15k di codice e, come previsto, la dimensione del file binario risultante è di circa 750 Kb in modalità di rilascio e leggermente superiore a 1 Mb in modalità di debug. Fin qui tutto bene.Dimensione delle librerie statiche generate da Xcode

Tuttavia, ObjcWraper.a e PureCppLib.a hanno una velocità superiore a 6 Mb ciascuna in entrambe le modalità. Quindi la prima domanda è perché è così. Ma ancora più importante, come posso assicurarmi che quelle librerie statiche non includano parti o tutto il codice sorgente?

Grazie in anticipo!

+0

Cercare "dead code stripping". Nella mia esperienza l'ottimizzatore di compilatore (modalità di rilascio) non includerà il codice di librerie a cui non fa riferimento l'applicazione. Non sono in un posto per fare le ricerche su Google, quindi provalo prima. Risponderò ancora una volta che avrò una posizione migliore. – gnasher

+0

Kenny, Il codice guasto non sembra essere il problema qui. La libreria che ho chiamato PureCppLib, più i wrapper appropriati, compila a 500-900Kb in caso di vincita, vinci mobile, macosx e android ndk se compili a una lib dinamica (il che significa che anche la maggior parte dei dead code viene collegata). Ma su iPhone le librerie dinamiche non sono permesse, quindi ho bisogno di distritbute una lib statica - e 6Mb non sembra giusto. – user325014

+0

@ shaft80: le librerie dinamiche possono avere un dead code stripping (e avranno uno stripping del codice morto molto aggressivo con alcuni linker se ad esempio viene utilizzato un file di simboli esportato); questo certamente potrebbe essere il problema. –

risposta

10

Probabilmente si desidera creare la libreria statica senza eseguire il debug dei simboli. Trova l'impostazione di generazione "Genera simboli di debug" per la destinazione della libreria statica nella configurazione distribuita e assicurati che sia deselezionata.