如何从iOS库中提取对象文件(在Mac上)



我有一个第三方iOS库,链接并在我的应用程序和模拟器中运行良好。我试图从中提取目标文件,以便将其与另一个第三方软件集成,该软件用自己的代码重新打包目标文件。然而,我无法通过ar提取对象文件;我总是得到错误,"不合适的文件类型或格式"。

所讨论的库是包含armv7、armv7s和i386的fat库。Stock 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

然而,即使在稀释之后,我也不能用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安装开发工具。

对于这个麻烦的库,我可以采取什么额外的步骤吗?

回复Martin评论的更新

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

看起来根本就不是一个库!

这个"库"实际上不是一个库,而是一个对象文件本身。

这个脚本运行良好。试试。

https://code.google.com/p/ompt-intel-openmp/source/browse/itt/libomp_oss/tools/extract-objects.pl

相关内容

  • 没有找到相关文章

最新更新