開發技巧: 利用lipo 編譯合併iPhone模擬器和真機通用的靜態類庫

如何編譯靜態類庫,大家已經比較熟悉了,而且現在網上也有很多教程,就不多羅唆了. 現在問題是, 我們編譯好了會是兩個版本的.a文件 分別用於模擬器和iPhone真機, 因爲Mac和iPhone的CPU不同, 才造成了這樣的情況. 有點像 PowerMac 和 InterMac.

屏幕快照 2010-01-01 下午09.34.54.png

在使用靜態類庫的時候, 我們如果想在模擬器調試, 就必須把用於模擬器版本的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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章