2010-11-01 44 views
0

我有libX鏈接libA和libY鏈接libA。現在我需要在同一個項目中使用libX和libY,因此它們被鏈接到同一個應用程序中。爲了爭辯,我們假設libA的大小爲5 MB,並且我正在構建一個iOS應用程序。如何避免在Xcode中多次包含公共基本庫?

我已經read here在這種情況下庫之間沒有衝突,因爲本例中的libA將包含在libX和libY中。但是,這也將使應用程序的尺寸顯着增加10 MB,而不是5 MB。

爲了不在應用程序中包含兩次libA,我需要做些什麼?有沒有編譯器開關?

除此之外,有什麼我可以做的方面是如何設置庫和分成Xcode項目,以便我最終與libA鏈接只有一次?例如,我可以在不鏈接到libA的情況下構建libX和libY,假設最終項目將libA添加爲鏈接庫?

通常情況下,我只是建立libA作爲動態庫,但據我所知,這是不允許在iOS上。

回答

2

AFAIK對靜態庫說「libX鏈接到libA」是錯誤的。靜態庫只是對象文件的存檔。鏈接應用程序時,實際鏈接指責。所以沒有重複的庫。

+0

我已經清理了我的項目,事實上,我有一個使用libA的靜態libX,但它甚至沒有鏈接到它。只要能夠找到libA的頭文件,只要使用libX的任何項目都與libA鏈接,它就會進行編譯。 – LearnCocos2D 2010-11-03 11:17:50

0

從相關性中刪除(可能)鏈接階段,然後將所有必需的庫鏈接到最終的可執行文件。