今天介紹下,如何利用xcode,新建乙個靜態庫,以及如何編譯成i386、armv7、armv7s 等平台架構。
開發環境:mac os x 10.9.4 + xcode 5.0.2
一:新建靜態庫
1,開啟xcode,-》create a new xcode project -》framework & library - > cocoa touch static library,next。
2,填寫 product name , organization name, company identity, 然後next。
3,建立好專案後,目錄結構如下所示:
4,開啟「mycommon.h」檔案,新增乙個靜態方法:+(void)myprint:(nsstring *)text;
5, 開啟「mycommon.m」檔案,新增方法體:
+(void)myprint:(nsstring *)text
6,儲存,編譯,到此,我們的靜態庫就製作成功了。如下圖所示:
其中,要注意:圖中紅色1處,表示選中 ios device ,此時會生成 armv7、armv7s、arm64 架構的靜態庫;選中任一ios模擬器,則會生成i386架構下的靜態庫;圖中紅色2處,如果為紅色,表示靜態庫尚未生成,如果為黑色,表示靜態庫生成成功。(ps:建議先選ios device 生成靜態庫,再選模擬器生成靜態庫)
7,在上圖中紅色2處,右鍵,「show in finder」,開啟資料夾,就會看到我們生成的靜態庫檔案了。
8,現在生成的是debug版本,如果想生成release版本的,可以在schema裡編輯一下:選單欄,product - > schema - > edit schema ,或者直接快捷鍵:command + < ,開啟對話方塊,左邊選擇「run」,右邊 build configuration 中選擇 release ,ok.
重新編譯執行一下,release版本就生成了。重新開啟剛才的資料夾,就會看到了。
至此,我們的靜態庫就製作完畢了。下面介紹下如何使用:
二、靜態庫的使用
如下圖所示:
儲存,編譯,執行,就會看到圖中4處紅色部分:表示我們自己的靜態庫呼叫成功了。
在錯誤資訊中,我們也可以看到,找不到必需的i386架構的 libmycommon.a 靜態庫檔案。(相同的,如果使用真機測試,工程裡卻新增了模擬器使用的i386架構的靜態庫檔案,也會報錯,此時錯誤資訊會諸如:missing required architecture armv7、armv7s 等)
三、教大家如何檢視靜態庫的架構資訊,以及如何合併模擬器和真機靜態庫。
1,首先開啟mac 終端,切換到靜態庫所在資料夾,輸入如下命令:
lipo -info libmycommon.a
回車,接著就會看到靜態庫的架構資訊了,如圖所示:
此時,我們可以知道,上圖中使用的靜態庫是armv7等架構的,即是真機使用的靜態庫。
2,合併模擬器和真機靜態庫,在終端中輸入命令:
lipo -create libmycommon_iphone.a libmycommon_simulate.a -output libmycommon.a
,之後,在終端當前資料夾下,就會看到合併後的靜態庫檔案 libmycommon.a 了。
3,在剛才的測試工程中,換用我們剛剛生成的合併版本的靜態庫檔案,這樣,不管模擬器,還是真機,都可以直接除錯執行了。
Xcode 之自己編譯靜態庫
今天介紹下,如何利用xcode,新建乙個靜態庫,以及如何編譯成i386 armv7 armv7s 等平台架構。開發環境 mac os x 10.9.4 xcode 5.0.2 一 新建靜態庫 1,開啟xcode,create a new xcode project framework library...
Xcode 之自己編譯靜態庫
今天介紹下,如何利用xcode,新建乙個靜態庫,以及如何編譯成i386 armv7 armv7s 等平台架構。開發環境 mac os x 10.9.4 xcode 5.0.2 一 新建靜態庫 1,開啟xcode,create a new xcode project framework library...
Xcode新增靜態庫以及編譯選項配置常見問題
一,xcode編譯出現link錯誤,出現 duplicate symbols for architecture i386 clang 提示.問題 鏈結時,專案有重名檔案.解決 根據錯誤提示,做如下檢查 1.taraget build settings link binary with librari...