AMD64(Debianテスト "jessie")でLinuxカーネルを構築できるようにクロスツールチェーンをインストールしようとしましたARMシステム。このエントリはsources.list
にあります:
deb http://www.emdebian.org/debian sid main
gcc-4.7-arm-linux-gnueabiをインストールしようとすると、エラーが発生しました。
cc-4.7-arm-linux-gnueabi:依存:libgomp1-armel-cross(> = 4.7.2-5)がインストールされない
libgomp1-armel-crossは次に依存しますgcc-4.8-base-armel-crossはどこでも利用できません。
ある時点で、私はこれらのクロスビルドツールを同じリポジトリからインストールし、数週間前にこれらのARMシステムで実行されるカーネルを構築しました。何かが壊れていますか?リポジトリ?私はGCCの他のいくつかのバージョンを試しましたが、それでも同じ問題が発生します。
理想的ではないソリューションは、Ubuntu 12.04 VMでのクロスビルドです。ディストリビューションには、公式リポジトリから入手できるARMクロスコンパイラーがあります。
Debianにはクロスツールチェーンが正式に含まれていますが、次の安定版リリース(8.0)には含まれません。 仮想パッケージが提供されます 。
Emdebianリポジトリは、ほとんどの場合stable
で使用することをお勧めします。リポジトリに組み込まれていないユーティリティ、プルバックされたパッケージなどが存在する可能性があるためです。すべてのライブラリに正しい依存関係があることを確認したい場合、私はstable
またはtesting
をお勧めします。これらは依存関係の問題が発生したり、何か問題が発生したりする可能性が低いためです。
安定は役に立ちません。 4.7-4.8の不整合はまだあります。 gcc
のバージョン4.4(前後)以降、矛盾が存在します。
私は「Linuxの方法」で物事を行うことをお勧めします。つまり、私にとっては、可能な限り自動構成を少なくします。ディストリビューターのサイトから必要なツールチェーンをダウンロードし、プロジェクトの作業ディレクトリに.CCファイルを設定します。 CCファイルは次のようになります。
export PATH=< PATH-TO-TOOLCHAIN-BIN-FOLDER>:${PATH}
export CROSS_COMPILE=< TOOLCHAIN PREFIX` i.e "arm-none-gnueabi-" (the last "-" is important)
export Arch=< ARCHITECTURE>
その後、コンパイルを実行する前に、「source .CC」を発行し、通常どおりにコンパイルします。つまり、「gcc/g ++/ld ... ...」です。コンパイルは自動的にツールチェーンを使用します(ツールチェーンが使用されていることがコンパイルの出力に表示されます)