2016-01-26 3 views
1

В моем поиске способа определить, является ли бинарная IOS была построена с битового кода, я нашел следующее сообщение:Метод определения содержит двоичный битового кода больше не кажется, работает

How to check if a framework is BITCODE supported for Xcode7

Здесь следующий метод был предложен, чтобы определить, присутствует битовый код в двоичном коде:

$ otool -l libName.o | grep __LLVM 

Однако я попробовал это на несколько исполняемых файлах без успеха. Одна из них - библиотека, которую я знаю, имеет биткод, поскольку после того, как я изменил флаг в своем проекте, ошибка сборки исчезла. Еще один из них - двоичный файл для расширения файла, с использованием Archive. А еще для яблочных часов.

Я считаю, что все вышеупомянутые двоичные файлы должны иметь биткод, и все же я всегда получаю никаких результатов от приведенной выше команды.

Кто-нибудь знает какой-либо другой метод, который работает с последними бинарниками?

Я использую XCode 7.2 и 10.10.5 в случае, если это имеет значение.

UPDATE: Вот пример файла, который должен иметь биткод, но приведенная выше команда ничего не возвращает. Это двоичный файл из тестового поставщика файлов. Я сгенерировал его через Archive and Deploy as Ad Hoc и удостоверился, что параметр для биткода включен для цели.

https://www.dropbox.com/s/eyuzs5j1t7nsq6t/CustomDocumentProviderFileProvider?dl=0

+0

Можете ли вы предоставить ссылку на двоичный файл, который терпит неудачу с этим методом? –

+0

Конечно, я просто обновил вопрос, чтобы включить ссылку на файл. Благодаря! – Locksleyu

ответ

3

Это, как представляется, проблема с otool как сообщает here. Используйте file, чтобы получить список архитектур, а затем предоставить архитектуру otool. Учитывая жирную бинарный с armv7 для битового кода, arm64, i386 и x86_64:

$ file lib.a 
lib.a: Mach-O universal binary with 4 architectures 
lib.a (for architecture armv7): current ar archive random library 
lib.a (for architecture i386): current ar archive random library 
lib.a (for architecture x86_64): current ar archive random library 
lib.a (for architecture arm64): current ar archive random library 

$ otool -arch armv7 -l lib.a | grep bitcode 
sectname __bitcode 

Согласно этому question, otool не сообщает битовый код для x86_64 и i368.

CustomDocumentProviderFileProvider, кажется, не содержит битовый код:

$ file CustomDocumentProviderFileProvider 
CustomDocumentProviderFileProvider: Mach-O universal binary with 2 architectures 
CustomDocumentProviderFileProvider (for architecture armv7): Mach-O executable arm 
CustomDocumentProviderFileProvider (for architecture arm64): Mach-O 64-bit executable 

$ otool -arch armv7 -l CustomDocumentProviderFileProvider | grep bit 
$ 
0

Отказа от ответственности: Я автор LibEBC.

Вы можете использовать ebcutil, чтобы определить, присутствует ли в любом двоичном (Мах-О, ELF) или библиотеках (.a/.dylib/.so) битовый код.

https://github.com/JDevlieghere/LibEBC