2013-03-13 80 views
3

我有一個第三方iOS庫,鏈接並在我的應用程序和模擬器中正常運行。我試圖從中提取目標文件,以便將其與另一個第三方軟件進行集成,這些軟件使用自己的代碼重新打包目標文件。但是,我無法通過ar提取目標文件;我始終得到錯誤,「不合適的文件類型或格式」。如何從iOS庫(在Mac上)提取目標文件?

有問題的庫與ARMv7的,armv7s脂肪庫,和i386包括在內。股票lipo不知道我的機器上armv7s,但Xcode的作用:

$ lipo -info library.a 
Architectures in the fat file: library.a are: armv7 (cputype (12) cpusubtype (11)) i386 
$ xcrun -sdk iphoneos lipo -info library.a 
Architectures in the fat file: library.a are: armv7 armv7s i386 

我可以成功地瘦出來與lipo

$ xcrun -sdk iphoneos lipo library.a -thin armv7 -output library-armv7.a 
$ xcrun -sdk iphoneos lipo -info library-armv7.a 
Non-fat file: library-armv7.a is architecture: armv7 

然而,即使細化出來後,我可以」安裝開發工具

$ xcrun -sdk iphoneos ar -tv library-armv7.a 
ar: library-armv7.a: Inappropriate file type or format 
$ xcrun -sdk iphoneos ar -xv library-armv7.a 
ar: library-armv7.a: Inappropriate file type or format 

我在OS X 10.8.2時,Xcode 4.6:與ar牛逼操縱它。

是否有任何額外的步驟,我可以拿這個麻煩的圖書館嗎?

更新響應馬丁的評論

file顯示以下內容:

$ file library.a 
library.a: Mach-O universal binary with 3 architectures 
library.a (for architecture armv7): Mach-O object arm 
library.a (for architecture cputype (12) cpusubtype (11)): Mach-O object arm 
library.a (for architecture i386): Mach-O object i386 
$ file library-armv7.a 
library-armv7.a: Mach-O object arm 

看起來它不是一個圖書館了!

+1

什麼是「檔案」命令打印您的檔案? – 2013-03-13 19:06:47

+0

呵呵。交付的「圖書館」實際上已經是一個對象......這可能會否定所有這一切。 – 2013-03-13 19:21:13

+0

如何使用提取物而不是瘦對lipo?我從來沒有使用瘦命令 - 我不認爲它正在做你想做的。 – escrafford 2013-03-13 19:25:26

回答

1

「庫」並不是一個真正的圖書館,而是一個目標文件本身。沒有什麼可以提取的。