web-dev-qa-db-ja.com

DebianでクロスツールチェーンをインストールしてARMバイナリをビルドする

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クロスコンパイラーがあります。

6
tshepang

Debianにはクロスツールチェーンが正式に含まれていますが、次の安定版リリース(8.0)には含まれません。 仮想パッケージが提供されます

2
tshepang

Emdebianリポジトリは、ほとんどの場合stableで使用することをお勧めします。リポジトリに組み込まれていないユーティリティ、プルバックされたパッケージなどが存在する可能性があるためです。すべてのライブラリに正しい依存関係があることを確認したい場合、私はstableまたはtestingをお勧めします。これらは依存関係の問題が発生したり、何か問題が発生したりする可能性が低いためです。

5
Braiam

安定は役に立ちません。 4.7-4.8の不整合はまだあります。 gccのバージョン4.4(前後)以降、矛盾が存在します。

1
user73534

私は「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 ... ...」です。コンパイルは自動的にツールチェーンを使用します(ツールチェーンが使用されていることがコンパイルの出力に表示されます)

0
MoonDrop legacy