2

iPhone または iPad 用のアプリケーションに静的ライブラリを含める最良の方法はどれですか?

私はすることを選ぶことができました

  • 適切なプラットフォームを提供するライブラリをコンパイルし、ユーティリティでライブラリ ファイルをar構築してから、フレームワークとしてプロジェクトに追加します。
  • ライブラリ .c/.h のソースを含めて、アプリケーションと一緒にコンパイルする

含めたいライブラリのすべての特定の設定を管理することは気にしないので、最初のアプローチはより簡単に思えますが、iPhone と iPad の両方のライブラリを作成し、リンク時に xcode が適切なライブラリを使用できるようにするにはどうすればよいですか?

2 番目のアプローチは、xcode がアプリケーションとライブラリのコンパイルを処理するため (設定が異なると思われます)、より複雑に思えます。lib のソースを簡単に追加できますが、xcode がそれらを使用して正しい方法でビルドできるようにするには、make スクリプトを含める必要があります。

続行する方法について何か提案はありますか? 含めようとしているライブラリはlibsshです。(もちろん、このライブラリは既にコンパイルされており、iPhone で正常に試行されていることは知っています)

前もって感謝します。

4

1 に答える 1

1

私は最初のアプローチに行きます。

おそらく、iPhone 用と iPad 用の 2 つの異なるバージョンのライブラリを作成する必要があります。これらは、異なるアーキテクチャ (iPhone 3G 用の armv6、iPhone 3GS 用の armv7、最初の iPhone シミュレータ用の i386、iPad 用のもう 1 つの armv7 と i386) を含むファット ライブラリでなければなりません。

基本的に、iPhone 用に 3 つの異なるバージョンを作成し、lipo ツールを使用してそれらを 1 つのファット ファイルにマージします。

次に、iPad 用に 2 つの異なるバージョンを再度ビルドし、lipo を使用してそれらをマージします。2 つの異なる SDK (iPhone 用 3.1、iPad 用 3.2) に属するコンパイラを使用してビルドする必要があるため、最初に iPhone 用にコンパイルした armv7 および i386 バージョンを iPad 用に再利用できないことに注意してください。

lipo を使用して、2 つの armv7 バージョンまたは 2 つの i386 バージョンのライブラリを文句なしに 1 つのファイルにマージできるかどうかはわかりません。この場合、プロセス全体の最後にただ 1 つのファット ライブラリを作成できるため、これを試してみることをお勧めします。

于 2010-06-06T22:03:59.497 に答える