iphone x C 通過什么編譯器編譯成的靜態庫給ios調用?
C 通過什么編譯器編譯成的靜態庫給ios調用?使用gcc編譯器或Xcode進行編譯。在開發過程中,我們經常會遇到一些經常在不同項目中使用的部分。提取這些部分以生成靜態庫通常是更好的方法。Xcode有
C 通過什么編譯器編譯成的靜態庫給ios調用?
使用gcc編譯器或Xcode進行編譯。在開發過程中,我們經常會遇到一些經常在不同項目中使用的部分。提取這些部分以生成靜態庫通常是更好的方法。Xcode有一個制作靜態庫的模板,網上有很多相關的步驟,但在實際操作中,還有很多細節需要注意。下面是我遇到的一些問題的總結。
1. 編譯庫的發布版本。在“管理方案”中,將“構建配置”選項更改為“發布”。如果在靜態庫項目中使用category,則可能會遇到鏈接問題。解決方案是在靜態庫項目和靜態庫項目加載中都使用“-all”,即在相應目標加載的“生成設置”中的“其他鏈接器標志”選項中添加“-all”。注意:必須在使用靜態庫的項目中添加編譯器選項
至于在生成靜態庫的項目中是否添加,雖然沒有嘗試,但是建議添加這個編譯選項。
3. 靜態庫支持的SDK版本為了使您的靜態庫支持盡可能多的IOS系統版本,您應該從“IOS部署目標”選項中選擇所需的IOS版本。設置如下圖所示。這是我的靜態庫項目的配置,我修改的選項顯示在紅色框中。
4. 自動復制頭文件,并在項目相應目標的“構建階段”下添加“復制頭”選項。默認情況下,此選項不可用。添加方法是點擊下面的“添加構建階段”按鈕,選擇要添加的。此選項下有三個子選項:public、private和project。通過單擊下面的加號,您可以將項目中的頭文件添加到“project”。右擊相應的頭文件,當頭文件移到“pure”時,選擇“move to public”,項目編譯完成后,項目路徑中會出現一個名為“usr/local/include”的文件夾。編譯項目后的文件。頭文件是public組中的頭文件。在這個時候,只需復制。此路徑下的文件和頭文件指向所需的項目文件。沒有辦法改變它。因為Lib有IO端口,所以打包后的pin在編譯時已經包含在代碼中,如果新項目想改變IO端口,就需要修改翻譯后的Lib代碼,但是不改變Lib是無法實現的。必須修改和重新編譯IO端口的定義。如果不能更改lib,就不能更改IO端口。這也可以做到。根據原來的IO引腳設計一個新的項目并不困難。為什么要更改IO引腳?必須更改I/O引腳。重新打包lib文件并不困難。在封裝開始時,LIB是由C程序生成的。只要找到C程序并修改它。C程序丟了嗎?不,這么重要的程序文件會丟失嗎?這也是一個教訓。具有IO定義的C程序不應打包為lib文件。Keil系統具有大量的庫函數,幾乎全部打包為lib文件。而且所有庫函數都不涉及IO端口,都是通用的,都是純計算程序。這樣的程序可以打包為lib文件。