我有一个第三方 iOS 库,可以在我的应用程序和模拟器中链接并正常运行。我正在尝试从中提取目标文件,以便将其与另一款第三方软件集成,后者使用自己的代码重新打包目标文件。但是,我无法通过提取目标文件ar
;我一直收到错误消息“不适当的文件类型或格式”。
有问题的库是一个包含 armv7、armv7s 和 i386 的胖库。Stocklipo
不知道我机器上的 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
但是,即使将其稀释后,我也无法使用以下方法对其进行操作ar
:
$ 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 上。
对于这个麻烦的库,我可以采取任何额外的步骤吗?
更新以回应马丁的评论
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
看起来它根本不是图书馆!