iOSライブラリからBitCodeへ質問する

iOSライブラリからBitCodeへ質問する

最近、Xcode 7 ベータ版をダウンロードしたのですが、Xcode は、一部の C ライブラリが BitCode にコンパイルされていないとエラーを表示します。iOS と互換性のある BitCode を生成するように Clang に指示するにはどうすればよいでしょうか? Stackoverflow で同様の回答を見たことがありますが、iOS 用の BitCode ライブラリの生成に適用されるかどうかはわかりません。

編集:

正しい設定 -fembed-bitcode を使用していますが、アーカイブしようとすると、次のエラーが発生します: ld: 警告: ファイル XXXX/XXXX を無視します。ファイルは、リンクされているアーキテクチャ (arm64) ではないアーカイブ用にビルドされました。-fembed-bitcode-marker を使用すると、アーカイブはできますが、次のエラーが発生します: XX/XX はビットコード マーカーのみでビルドされたため、完全なビットコード バンドルを生成できませんでした。ライブラリは、ビットコードを有効にした Xcode アーカイブ ビルドから生成する必要があります。

何が問題なのか、何かアイデアはありますか? ライブラリは正常にコンパイルされていますが、アーカイブできません。単純な add 関数を作成してライブラリにしましたが、同じ症状が発生するため、コンパイルしているライブラリではありません。

編集 2: ビットコードを使用して arm64 と armv7 の両方のバージョンをビルドし、それらを一緒にリポする必要があります。ビットコードを使用しても、アーカイブ時に fat ライブラリが不要になるわけではありません。ソース:リンク

ベストアンサー1

静的ライブラリを構築するときは、ビットコード生成のために以下を追加する必要があります。

-fembed-bitcode 

動的ライブラリの場合は、さらにリンクする必要があります

-fembed-bitcode

注: このコマンドはXcode7以降でのみ使用できます。

使用に関する一般的な回答に関しては-fembed-bitcode-marker

-fembed-bitcode-marker オプションを使用した通常のビルドでは、実際のコンテンツを含まない最小限のサイズの埋め込みビットコード セクションが生成されることに注意してください。これは、ビルド プロセスを遅くすることなく、ビルドのビットコード関連の側面をテストする方法として行われます。実際のビットコード コンテンツは、アーカイブ ビルドを実行するときに含まれます。

bwilson Appleスタッフ。https://forums.developer.apple.com/thread/3971#12225


もう少し詳しく言うと:

  • -fembed-bitcode-markerアーカイブビルド後にバイナリ内でビットコードが配置される場所を単にマークします。
  • -fembed-bitcode実際には完全なビットコード生成と埋め込みを行うので、静的ライブラリの構築にはこれを使用する必要があります。
  • Xcode自体は-fembed-bitcode-marker通常のビルド(シミュレータへのデプロイなど)でビルドされます
  • Xcode は、-fembed-bitcodeアーカイブ ビルド / プロダクション ビルドでのみ をビルドします (これは Apple にのみ必要であるため)。

おすすめ記事