2010-04-24 37 views
5

我在Xcode中有一個項目樹,如下所示:AppProject依賴於ObjcWrapper,而ObjcWrapper依賴於PureCppLib。 ObjcWrapper和PureCppLib是靜態庫項目。綜合起來,所有源代碼都幾乎沒有達到15k行代碼,並且,正如所料,所產生的二進制文件的大小在釋放模式下大約爲750Kb,在調試模式下略大於1Mb。到現在爲止還挺好。由Xcode生成的靜態庫的大小

但是,在任一模式下,ObjcWraper.a和PureCppLib.a均超過6Mb。所以第一個問題就是爲什麼如此。但更重要的是,我如何確保這些靜態庫不包含部分或全部源代碼?

在此先感謝!

+0

查找'死碼剝離'。根據我的經驗,編譯器優化器(發佈模式)不會包含來自應用程序未引用的庫的代碼。我沒有地方爲你做Google搜索,所以先試一試。一旦我的位置更好,我會再次回覆。 – gnasher 2010-04-24 19:02:55

+0

Kenny, 死代碼在這裏似乎不是問題。我稱之爲PureCppLib的庫,加上適當的包裝器,如果編譯爲動態庫(即使大部分死代碼都被鏈接),也可以在win上編譯爲500-900Kb,贏取移動版,macosx和android ndk。但在iPhone上,動態庫是不允許的,所以我需要分配靜態庫 - 而6Mb只是看起來不正確。 – user325014 2010-04-24 19:57:07

+0

@ shaft80:動態庫可能會有死代碼剝離(例如,如果使用導出的符號文件,則會有一些非常積極的死代碼剝離)。這當然可能是問題所在。 – 2010-08-21 02:48:08

回答

10

您可能想要構建不帶調試符號的靜態庫。在您分發的配置中找到靜態庫目標的「生成調試符號」編譯設置,並確保它未被選中。