2016-08-15 12 views
1

arm-none-eabiとarm-linux-gnueabiの違いは何ですか?私はそれらを使用する方法の違いを知っています(ベアメタルソフトウェアの場合は1つ、Linuxで実行するソフトウェアの場合はもう1つ)。しかし、技術的な背景は何ですか?arm-none-eabiとarm-linux-gnueabiの違いは?

私は理解している限り、APIのようなものだがバイナリレベルではABIに違いがあることが分かります。これは、異なるアプリケーションの相互運用性を保証します。

しかし、オペレーティングシステムを持っているかしていないかによって、私のツールチェーンにどのような影響があるのか​​分かりません。唯一のことは、ライブラリを静的にリンクする必要があるかもしれないということです。

このtoppicに関連して見つかったほとんどのページは、技術的背景ではなくツールチェーンの使用方法にちょうど答えました。私はメカトロニクスの学生であり、組み込みシステムの新しい人です。この分野での私の経験はいくぶん限られています。

+0

はい、ほとんどのライブラリのことですが、linux(libcなど)上で動作するように調整しようとしていますが、私はnewlibと思っています。ベアメタル作業の場合は、どちらもCからアセンブリを作成し、アセンブリからオブジェクトを作成し、独自のリンカースクリプトなどとリンクすることができます。また、私が話しているベアメタルは標準ライブラリがないものです。ソースから独自のライブラリを作成するツールです。基本的には両方とも一般的なクロスコンパイラとして動作します。ライブラリのサポートが必要な場合は、どちらを使用するかが重要です。 –

+0

@dwelch:ベアメタルにライブラリを使用する必要はありません。おそらく** ** gccが呼び出すかもしれない関数(主に 'memcpy'など)を提供しなければなりません(例えば、' structs'を割り当てるとき)。 – Olaf

+0

@Olaf私はベアメタル上でCライブラリを使用しませんが、一部の人はnewlib(またはそのビルドにやさしいもの)を使用し、arm-linuxの代わりにarm-none-eabiを使用したい人もいます彼らには問題があるので、したがって、OPが何を対象としているかによって、違いが重要かどうかが決まります。 –

答えて

1

多分このlinkの説明が役立ちます。

おそらく最大の違い:

は、「ベアメタルABIは(glibcのを想定)のLinux ABIに異なるCライブラリ(例えばnewlibの、または全くないCライブラリ)を想定されますので、コンパイラ。スタンダードCライブラリを超えて利用できると信じているものに応じて、さまざまな関数呼び出しを行う可能性があります。

関連する問題