lipo合併iPhone模擬器和真機的靜態類庫

2021-05-24 11:54:19 字數 981 閱讀 5039

用xcode寫過lib的tx都應該試過,simulator和device 編譯出來的lib不能通用,即跑simulator需要simulator的庫,跑device需要device的庫,這是個很麻煩的問題,特別是xcode很智慧型地把lib的路徑新增到lib search path中的時候。

舉個例子,一開始都是使用simulator的,然後往專案中加入乙個simulator的庫,跑起來沒問題。然後選device模式,編譯出錯,說file is not of required architecture in iphone device之類的,於是把simulator的庫去掉,加入device的庫,編譯還是出相同的錯誤,這是個很鬱悶的問題,仔細檢視配置,沒發現明顯的異常。於是好奇地想窺探下simulator和device在proj file 是怎樣的,又苦於不會在mac下開啟.xcodeproj檔案,於是暴力解決問題,把.xcodeproj拿到windows下解剖,仔細研究檔案內容後,發現裡面的lib search path 有兩個路徑,就是simulator和device的庫的位置,於是猜其問題是在device下,從lib search path中找到了lib.a檔案,就用上了,發現架構不對,於是報錯,把lib search path中多餘的路徑刪去後,編譯成功。

到底simulator和device有啥不同呢,從info->build->valid architectures發現,simulator下的是i386,device下的是armv6 armv7。終於明白問題所在,必須google之。從stack over flow有提到(http://stackoverflow.com/questions/2717857/pocketsphinx-file-is-not-of-required-architecture-in-iphone-device-but-working-i),答案中有人提到lipo這玩意,嘗試後,成功了,具體用法是:

lipo -create path/simulator.lib path/device.lib -output path/mylib.lib

lipo合併真機模擬器

合併真機模擬器.a檔案,製作通用靜態庫 這兩個庫乙個是用於真機執行的乙個是用於模擬器執行的.其實我們可以利用lipo將這二個檔案打包成乙個通用的a檔案。命令 lipo create users pjk1129 library developer xcode deriveddata print dgf...

安卓模擬器 exagear模擬器安卓模擬器

讓android 裝置使用者重溫經典 pc 遊戲,來自俄羅斯的初創公司 eltechs發布了一款全新的 android 遊戲模擬器 exagear strategies。該遊戲模擬器的主要功能就是將經典的 pc 遊戲帶到 android 智慧型手機或平板電腦上來。1.exagear軟體和遊戲,完全免...

iphone開發,模擬器生成檔案路徑

documents library tmp2,documents 目錄就是我們可以用來寫入並儲存檔案得地方 獲取方式 nsarray paths nssearchpathfordirectoriesindomains nsdocumentdirectory,nsuserdomainmask,yes ...