2013-03-13 2 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 

Однако, даже после того, как истончение его, я могу» т манипулировать с 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 

Похоже, это не библиотека вообще!

+1

Что команда «файл» печатает для вашего архива? –

+0

Huh. «Библиотека» доставлена ​​на самом деле уже объектом ... Это может отрицать все это. –

+0

Как насчет использования экстракта вместо тонкого на липо? Я никогда не использовал тонкую команду - я не думаю, что она делает то, что вы хотите. Экстракт – escrafford

ответ

1

«Библиотека» на самом деле не является библиотекой, а является самим объектом. Больше нечего извлекать.

Смежные вопросы