57

gcc ツールチェーンをビルドする場合、arm-elf または arm-none-eabi としてビルドする可能性がありますが、違いは何ですか?

私は今日eabiを使用していますが、それは他の人がそうしているように見えるからです.

注: このツールチェーンは、stm32 のような Cortex-M3 ベースの mcu:s のコードをクロスコンパイルします。

ありがとう


いくつかのリンク:

えび:

妖精:

4

4 に答える 4

40

各アーキテクチャまたはアーキテクチャ/OS の組み合わせには ABI があります。ABI (Application Binary Interface) は、関数の呼び出し方法、syscalls 番号、渡される引数、使用できるレジスタなどを記述します。

abi は、コンパイラがアセンブリを生成する方法を記述します。

アセンブラのみを使用する場合は、ABI を気にする必要はありません。

arm-elf と arm-none-eabi は、Arm ABI の 2 つのバージョンを使用するだけです。eabi ツールチェーンは新しいリビジョンを使用しますが、elf も生成するため、arm-elf-eabi と呼ばれることもあります。

于 2011-05-15T07:46:36.527 に答える
37

私の知る限り:

arm-elfツールチェーンは、elf 形式の実行をサポートする一部の OS 用の obj コードを生成します (Linux ABI の例)。OS がプログラムの実行を制御します。

arm-none-eabiツールチェーンは、マイクロコントローラーまたはマイクロプロセッサー用の obj コードを生成します (ベアメタルの場合、これは EABI - 組み込み ABI になります)。このコードは MC のクリーン フラッシュにダウンロードされ、電源投入後に MC のコアが実行を開始します。OS なし、拡張コマンド セット、共有モジュールとのリンクの可能性なし。

于 2013-06-13T12:24:23.383 に答える
4

ARM EABI は、ARM によって作成された標準であり、さまざまなツールチェーンが互換性のあるオブジェクトを作成できるようにします。たとえば、あるツールチェーンが別のツールチェーンによって作成されたオブジェクトをリンクできるようにします。

于 2012-03-12T16:51:54.527 に答える