如何編譯靜態類庫,大家已經比較熟悉了,而且現在網上也有很多教程,就不多羅唆了. 現在問題是, 我們編譯好了會是兩個版本的.a文件 分別用於模擬器和iPhone真機, 因爲Mac和iPhone的CPU不同, 才造成了這樣的情況. 有點像 PowerMac 和 InterMac.
在使用靜態類庫的時候, 我們如果想在模擬器調試, 就必須把用於模擬器版本的lib加到項目裏, 同理要想運行在iPhone上, 我們又必須把真機lib也加到項目, 這樣確保兩個平臺都能運行, 但問題是我們總有一個類庫是不需要了, 在Snow Leopard的Xcode 3.2中編譯的時候會出現一個警告: 沒必要加上***.a. Xcode 3.1 也偶爾出現, 沒有總結出規律來.
OK, 我們來解決這個問題!
假設兩個版本的lib分別是 libIMIUI.s.a , libIMIUI.d.a 我們的目標是 把他們合併成無敵超級通用版的libIMIUI.a :)
打開命令行 Terminal.app 輸入:
lipo -create
然後依次把兩個.a文件拖到終端窗口, 命令行會變成這樣:
lipo -create /Users/Travis/Desktop/libIMIUI.d.a /Users/Travis/Desktop/libIMIUI.s.a
然後接着輸入 -output 目標文件路徑,如:
-output /Users/Travis/Desktop/libIMIUI.a
最後現在這樣一條命令:
lipo -create /Users/Travis/Desktop/libIMIUI.d.a /Users/Travis/Desktop/libIMIUI.s.a -output /Users/Travis/Desktop/libIMIUI.a
回車! 好了, 這樣就會生成我們需要的通用類庫 libIMIUI.a