16

iPhone アプリに使用したいオープン ソース ライブラリがあります。ライブラリは C で書かれており、Makefile でコンパイルされます。静的ライブラリを使用したいと思います。

プロジェクトの依存関係に .a ファイルを追加すると、シミュレーターではうまく動作しますが、iPhone SDK をターゲットにするとリンクしません (確かに、.a ファイルは Intel プラットフォーム用にコンパイルされているためです)。

iPhone SDK の静的ライブラリをコンパイルするには、どの GCC コンパイラ フラグを使用すればよいですか? 「-arch」オプションを使用すると iPhone アーキテクチャが提供されると思いましたが、うまくいきませんでした。

どんな助けでも大歓迎です。

4

4 に答える 4

6

autoconfベースのライブラリの場合、私はChristopherStawarzのビルドスクリプトに投票します。

http://pseudogreen.org/blog/build_autoconfed_libs_for_iphone.html

このスクリプトを使用すると、1つのコマンドでプロセス全体を自動化し、iPhoneOS 2.0 / 2.1 / 2.2/2.2.1やiPhoneSimulator2.0/ 2.1 / 2.2/2.2.1などのさまざまなプラットフォーム用のライブラリバイナリを簡単に作成できます。

ただし、Xcode 3.1の変更により、$(SDKROOT)ビルド設定は「macosx10.5」、「iphoneos2.2.1」、「iphonesimulator2.2.1」などの短い名前になりました。そのため、ライブラリとヘッダーのXcodeでの検索パスの設定に関する記事で彼が述べた方法は機能しません(Xcode 3.1では)。パスを自分でハードコーディングする必要があります。

于 2009-03-05T18:18:39.683 に答える
3

GCC アプリケーションとして arm-apple-darwin-gcc でコンパイルしてみてください。次に、lipo を使用して 2 つの静的ライブラリ (arm と 386) をマージし、sim とデバイスの開発がシームレスになるようにします。

于 2008-12-08T00:08:58.143 に答える
1

x86 sdk (iphone シミュレーター) を使用して通常どおりコンパイルし、次に arm/ios 用のプラットフォーム (arm-xxx-xxx) を使用してコンパイルし、「LIPO」 (コマンドライン ツール) を使用して両方の静的ライブラリを .a に結合します。うまく機能し、車輪を再発明するよりも簡単です(少なくともそれらの小さなライブラリの場合)... libloとlibdmtxでそれを行いましたが、問題はなく、両方を行うのに10分ほどかかりました... :-)

于 2011-05-16T17:35:26.320 に答える
0

ここで提供されているヒントを使用してarmGCCコンパイラを何度か使用しようとした後、私はあきらめました。私の場合、iPhone用の静的ライブラリをコンパイルするよりも、ライブラリをXCodeに移植する方がはるかに簡単です。

于 2008-12-09T04:14:48.863 に答える