他社が作成した静的ライブラリがあります。それがビットコードを含む静的ライブラリであるかどうかを知りたいのですが、どのコマンドが端末でそれを検出できますか?
他の回答ですでに書かれているように、
otool -l yourlib.a | grep __LLVM
行く方法です。
otool -l yourlib.a | grep bitcode
信頼できない。
「ビットコード」セクションの検索は、ファイルに埋め込みビットコードが含まれているかどうかを検出するための信頼できる方法ではありません。それを行うには、「__ LLVM」セグメントを検索します。 -fembed-bitcode-markerオプションを使用した通常のビルドでは、実際のコンテンツなしで最小サイズの埋め込みビットコードセクションが生成されることに注意してください。これは、ビルドプロセスを遅くすることなく、ビルドのビットコード関連の側面をテストする方法として行われます。実際のビットコードコンテンツは、アーカイブビルドを行うときに含まれます。
xCocoa によるコメントも参照してください。
IPhone Simulatorのアーキテクチャのコードが含まれている場合(x86_64またはarm64)、otool
はビットコードを報告しないようです。
次のコマンドを使用して、libのアーキテクチャを一覧表示できます。
lipo -info yourlib.a
次に、各アーキテクチャのビットコードを個別に確認できます、例:
otool -Arch armv7 -l yourlib.a | grep bitcode
otool -Arch arm64 -l yourlib.a | grep bitcode
免責事項:私はLibEBCの著者です。
ebcutil
を使用して、Mach-Oバイナリまたはライブラリにビットコードが存在するかどうかを確認できます。埋め込みビットコードを抽出するために使用することもできます。
特定のファイルが(yourFile.o)
静的ライブラリのビットコードが有効になっている場合、'staticLibrary.a'
および同じotool
コマンドを使用します。ただし、macOSでは、デフォルトの抽出ユーティリティを使用してstaticLibrary.aを抽出することは許可されておらず、ほとんどのサードパーティツールも機能しません。
以下の手順に従って、特定の.o
ファイル
アーキテクチャの情報を取得する
lipo -info yourStaticLibrary.a
例:armv7 arm64
抽出yourStaticLibrary.a
上記のアーキテクチャのいずれかまたは両方
lipo yourStaticLibrary.a -thin armv7 -output yourStaticLibraryarmv7.a
(抽出する出力パスを指定します)
'yourStaticLibraryarmv7.a'
その後、デフォルトのmac unarchiverで簡単に抽出できます
解凍すると、フォルダ「yourStaticLibraryarmv7'
すべての.oファイルを含む
otool -l yourFile.o | grep bitcode
または特定のアーキテクチャ
otool -Arch armv7 -l yourFile.o | grep bitcode
ファイルのビットコードが有効になっている場合、コマンドラインで「sectname __bitcode」を取得します
LLVMシンボルに対してテストすることをお勧めします。
otool -l yourlib.a | grep LLVM
「__LLVM」でいくつかの行を取得する必要があります