ARM用クロスコンパイルツール

ネットワークには、ARMアーキテクチャ用のアプリケーションの構築に関するトピックに関する多くの情報源がありますが、最初にこの問題に遭遇したとき、私は複数の大きな打撃を受けました。 このトピックは、クロスコンパイルの始まりと、この問題に対するさまざまなアプローチに関するものです。



私のデバイスはARMv5TEアーキテクチャに属し、開発はUbuntu Linuxを搭載したx86マシンで実行されました。

これは序論であるため、数値の階乗を計算するための簡単なプログラムを収集します。



アプローチ1.コマーシャル。

CodeSourceryは、GNUツール(gcc、gdb、binutils)に基づいて、Eclipseに基づいたインターフェースを持つ商用統合開発環境Sourcery G ++を作成します。 インストール中に必要なすべてのライブラリとクロスコンパイラがインストールされるため、おそらくこれがアプリケーションを作成する最も簡単で最速の方法です。 公式ウェブサイトでは、購入の可能性に加えて、試用版を30日間使用できます。 Eclipseとの密接な「血縁関係」のおかげで、設定は直感的であり、詳細に記述する意味はありません。



1回限りのタスクに最適ですが、完全に無料のソリューションがあります。



アプローチ2. QEMU。

よく知られているQEMUエミュレーションプログラムは、ARMプラットフォームをサポートしていますが、これは使用しないでください。



開始するには、プログラム自体をインストールします。



sudo apt-get install qemu-kvm-extras-static





QEMU開発者は、環境のインストールを簡単にするために別のコマンドを作成しました(私の場合は、debian lennyです):



sudo build-arm-chroot lenny qemu





その結果、必要なアーキテクチャ用のlennyシステムイメージでqemuディレクトリを作成します。

コンパイルするのに十分なネットワークと必要なパッケージがありません。 qemuマシンのsources.listを編集します。

sudo nano qemu/etc/apt/sources.list







そしてそこに追加します



deb ftp.us.debian.org/debian lenny main contrib non-free

deb-src ftp.us.debian.org/debian lenny main contrib non-free








更新し、必要なパッケージをインストールし、QEMU自体で階乗を収集します。



アプローチ3.クロスツールを収集します。

Crosstoolは、glibcでサポートされるすべてのアーキテクチャのgccとglibcをビルドおよびテストするためのスクリプトのセットです。 さまざまなクロスツールを組み立てるとき(何らかの方法で )、さまざまなコンポーネントの互換性に問題がありました。 そのため、たとえば、バージョンの違いのためにgccはbinutilsとは友達ではなく、pokeメソッドを使用して動作するバンドルを選択する必要がありました。 幸いなことに、このプロセスはすでに自動化されており、非常に簡単になっています。 そのために、サイトlinux.org.ru mskmsk1985のユーザーに感謝します。

彼が書いたスクリプトは、GNUツールの最新バージョンからarm-linux-gnueabi-アーキテクチャ用のツールチェーンをコンパイルします。 CおよびC ++クロスコンパイラ、クロスデバッガ、およびターゲットアーキテクチャ用のデバッグサーバーがアセンブルされます。 詳細はこちら



アプローチ4. Gentoo-way。

私が書いたように、それはすべてUbuntuを搭載したコンピューターで行われていましたが、Gentooには同じことを行い、目的のアーキテクチャのバイナリを収集する独立したcrossdevプログラムがあることは言うに値します。



アプローチ5. Ubuntu-way。

クロスコンパイルの最も簡単な方法を探していたのは非常に複雑でした。もちろん、あまりにも明白で簡単に考えることのできないソリューションを見逃していました。 しかし、はい、クロスコンパイラはリポジトリから1つのコマンドでインストールできることがわかりました。



sudo apt-get install libc6-dev-armel-cross gcc-arm-linux-gnueabi







結論の代わりに。

クロスコンパイル方法は、上記の例に限定されません。 複数ページの説明、必要なツールを「ゼロから」作成するためのオプションがありますが、別のアーキテクチャで簡単なアプリケーションをすばやく作成して実行する必要がある場合、多くの場合、完全な学習のための十分な時間がなく、微妙な違いやソフトウェアの非互換性により、誰もこれを行うことを思いとどまらせることができます。



私の短いレビューが私の間違いを回避し、ARMアーキテクチャでアプリケーションを作成するための実用的なツールを迅速に入手するのに役立つことを願っています。 頑張って



All Articles