離線地圖 請問IOS如何將c 編譯的靜態(tài)庫引入到項目中呢?
請問IOS如何將c 編譯的靜態(tài)庫引入到項目中呢?使用gcc編譯器或Xcode進(jìn)行編譯。在開發(fā)過程中,我們經(jīng)常會遇到一些在不同項目中經(jīng)常使用的部分。提取這些部分以生成靜態(tài)庫通常是更好的方法。Xcode
請問IOS如何將c 編譯的靜態(tài)庫引入到項目中呢?
使用gcc編譯器或Xcode進(jìn)行編譯。
在開發(fā)過程中,我們經(jīng)常會遇到一些在不同項目中經(jīng)常使用的部分。提取這些部分以生成靜態(tài)庫通常是更好的方法。Xcode有一個制作靜態(tài)庫的模板,網(wǎng)上有很多相關(guān)的步驟,但在實際操作中,還有很多細(xì)節(jié)需要注意。下面是我遇到的一些問題的總結(jié)。
1. 編譯版本庫
在“管理方案”中,將“生成配置”選項改為“發(fā)布”。如圖所示:
2。靜態(tài)庫包含category
如果在靜態(tài)庫項目中使用category,可能會遇到鏈接問題。解決方案是在靜態(tài)庫項目和靜態(tài)庫項目uLoad中都使用“-all”,即將“-all”添加到相應(yīng)目標(biāo)的“buildsettings”uLoad中的“other linkerflags”選項中。注意:必須在使用靜態(tài)庫的項目中添加編譯器選項
至于在生成靜態(tài)庫的項目中是否添加,雖然沒有嘗試,但是建議添加這個編譯選項。
3. 靜態(tài)庫支持的SDK版本
為了使您的靜態(tài)庫支持盡可能多的IOS系統(tǒng)版本,您應(yīng)該從“iosdeployment target”選項中選擇所需的IOS版本。設(shè)置如下圖所示。這是我的靜態(tài)庫項目的配置,我修改的選項顯示在紅色框中。
4. 自動復(fù)制頭文件
在項目對應(yīng)目標(biāo)的“buildphases”下添加“copyheaders”選項。默認(rèn)情況下,此選項不可用。添加方法是點擊下面的“添加構(gòu)建階段”按鈕,選擇要添加的。此選項下有三個子選項:public、private和project。通過單擊下面的加號,您可以將項目中的頭文件添加到“project”。右鍵單擊相應(yīng)的頭文件并選擇“移動到公共組”。將頭文件移到“pure”后,在編譯項目后,名為“usr/local/include”的文件夾將出現(xiàn)在項目的路徑中。編譯項目后的文件。頭文件是licgroup中的公共頭文件。在這個時候,只需復(fù)制。此路徑下的文件和頭文件指向所需的項目文件。
重新打印
靜態(tài)庫和動態(tài)庫的區(qū)別?
靜態(tài)庫,。A和??蚣軇討B(tài)庫,。Dylib和??蚣莒o態(tài)庫:當(dāng)鏈接時,靜態(tài)庫將被完全復(fù)制到可執(zhí)行文件并多次使用。舊的多個冗余副本的動態(tài)庫:鏈接時,它將不會被復(fù)制。當(dāng)程序運行時,系統(tǒng)會將其動態(tài)加載到內(nèi)存中,以便程序調(diào)用。系統(tǒng)只加載一次,多個程序共享,需要注意的是,如果在項目中使用自制的動態(tài)庫,無法上載到Appstore模擬器的體系結(jié)構(gòu)是x86A CD/users/Lili/library/Developer/Xcode/deriveddata/staticdemo gqjyc/build/products/libdev模擬器的Lib文件夾所在的目錄可以通過Lipo-info靜態(tài)庫文件地址來支持哪個平臺Lipo-info 靜態(tài)演示.ais弧體系結(jié)構(gòu):x86uarmv7、arm64(5S)和armv7s(iphone5c)被合并到一個靜態(tài)庫Lipo-createlibdev/staticdemo中。libpro/staticdemo。A-輸出HMTool.alipo文件-創(chuàng)建要合并的靜態(tài)庫1要合并的靜態(tài)庫2合并后的輸出文件夾名稱注:雖然實機(jī)和模擬器的靜態(tài)庫是合并的,但我們不會在意它將來是在模擬器中運行還是在實機(jī)中運行,但我們還是建議您使用靜態(tài)庫程序發(fā)布時的真實機(jī)器庫