3

私のアプリとシミュレーターでリンクして正常に実行されるサードパーティのiOSライブラリがあります。オブジェクトファイルを独自のコードで再パッケージ化する別のサードパーティソフトウェアと統合するために、オブジェクトファイルを抽出しようとしています。arただし、 ;を使用してオブジェクトファイルを抽出することはできません。「不適切なファイルの種類または形式」というエラーが常に表示されます。

問題のライブラリは、armv7、armv7s、およびi386が含まれているファットライブラリです。Stocklipoは私のマシンのarmv7について知りませんが、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

開発ツールがインストールされたOSX10.8.2、Xcode4.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 に答える