3

我有一个第三方 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

看起来它根本不是图书馆!

4

2 回答 2

1

“库”实际上不是库,而是目标文件本身。没有什么可以进一步提取的了。

于 2013-03-13T19:24:20.457 回答
0

这个脚本运行良好。尝试一下。

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

于 2015-01-23T03:35:52.723 回答