OSX 10.7 Macbook pro からジェイルブレイクされた第 4 世代 iPod touch にクロス コンパイルするようにすべてを設定するにはどうすればよいでしょうか。私は主に、オープン ソース ライブラリを iphone に移植できるようにすることを目指しています。iOS 4 のクロス コンパイルに関する優れた/最近の記事が見つからないようです。
2 に答える
いくつか./configure
試してみたところ、arm-apple-darwin11 用に使用して強制的にビルドできることがわかりました。これらのフラグは、次の直後に使用する必要があります./configure --some-flags
。
CPP="cpp" CXXCPP="cpp"
CXX="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-llvm-g++-4.2" CXXFLAGS="-O -arch armv6 -arch armv7 -isysroot $SDK_ROOT/SDKs/iPhoneOS5.0.sdk"
CC="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-llvm-gcc-4.2" CFLAGS="-O -arch armv6 -arch armv7 -isysroot $SDK_ROOT/SDKs/iPhoneOS5.0.sdk"
AR="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ar"
AS="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/as"
LD="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ld"
LDFLAGS="-lstdc++ -arch armv6 -arch armv7 -isysroot $SDK_ROOT/SDKs/iPhoneOS5.0.sdk"
LIBTOOL="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool"
STRIP="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/strip"
RANLIB="/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ranlib"
CPP と CXXCPP は必須のプリプロセッサーです (デフォルトのもの)。CC および CXX は、Xcode に付属する arm 用の c および c++ コンパイラへのパスです。その他は、コンパイラが取得するフラグまたはコンパイル時に使用される最も一般的なツールへのパスを定義するマクロです。すべてがうまくいくとは言えませんが、これはあなたがすべきことの良い考えです。./configure
これらのフラグに追加することをお勧めします:
--prefix=/tmp/build --host=arm-apple-darwin11
彼らがしていることは、ライブラリとプログラムを の下のフォルダーに送信するメイクファイルの作成を支援すること/tmp/build
です。
私もそうしませんでした。私が試したすべてのツールチェーンは、動作しないか、iOS では動作しない x86_64 バイナリを作成することになりました。Cydiaから必要なものをすべてインストールしたので、現在iPadでaprを直接ビルドしようとしていますが、kqueue.cが正しくコンパイルされていません。私はすでに lua と他のソフトウェアをいくつか移植しているので、一般的にはこのように動作すると言えます。クロス コンパイルではなくネイティブ プラットフォームでビルドする主な理由は、一部のプログラムが他のプログラムに依存しているため (例: apr の apr-util)、それらの一部を実行する必要があるためです。ただし、Intel で arm を実行することはできません (少なくともエミュレーションなしで、iPhone シミュレーターは i386 バイナリを使用します)。
iOS で UNIX ツールを使用/構築することに関心がある人は、次の点に留意する必要があります。
- 必要なものが見つかるかもしれませんが、期待どおりに動作するとは言いません (これは特に開発者向けです。例: apr は Cydia に同梱されていますが、完全なパッケージではないため、apr-util をビルドしても意味がありません)。
- ジェイルブレイクされたデバイスを使用する必要があります。これは、OS を壊して復元する必要がある場合に問題になる可能性があります。ジェイルブレイク可能な iOS に復元できるように、必ず SHSH を保存してください。
- 探していたものが見つからない場合、物事はかなり厄介になります。ほとんどのソフトウェアは、一般的な UNIX システムで動作すると考えられていますが、iOS では問題が発生する可能性があります。iOS は、構造と動作方法が OS X に近いですが、特にネット関連のセクションで違いがあります。さらに、おそらく、作成するソフトウェアに (偽の) コード署名を行う必要があります。
- ビルドに問題のないソフトウェアでさえ、不要な驚きを抱えている可能性があります。iOS 用の apache2 のビルドに成功しましたが、実行すると、それ以上の説明もなく SIGSYS で行き詰まりました。
物事は通常簡単ではないので、気をつけて自分を支えてください.
Mac にツールチェーンがない (Apple が提供するものを除く) という事実については、Xcode をダウンロードするために Mac を持っている必要がないため、これが説明になるかもしれません。これは、最近の Mac ハードウェアのブームにもかかわらず、あなたと同じことをしている人があまりいないことを意味します。ツールチェーンは、Ubuntu などの Linux ベースの OS 向けにほぼ成功裏に構築されています。いつでも VM の使用を試みることができます。