2015-11-07 15 views
6

私は、ARM cortex-mデバイス用のベアメタルコード、Linuxカーネル、uBoot、Beaglebone Black(BBB)用のアプリケーションをコンパイルした経験があります。これは、皮質mコードはarm-none-eabi-gcc(OSがないため)を使用してコンパイルする必要があり、BBBのアプリケーションコードはarm-linux-gnueabi-gccでコンパイルする必要がありますシステムコールの作成が可能なOS、利用可能なプログラムローダと共有オブジェクト)です。LinuxカーネルとuBootをコンパイルすると、arm-linux-gnueabi-gccではなくarm-none-eabi-gccではないのはなぜですか?

私が理解できないのは、uBootとカーネルもarm-linux-gnueabi-gccでコンパイルする必要があるからです。私の考えでは、uBootは少なくとも、ベアメタルのプログラムであり、気になるOSはありません。これはいつか私を悩ませていますが、私は答えを見つけることができません。私を啓発できる人は誰ですか?

+0

ここであなたは* "uBoot [sic]を学びましたが、カーネルもarm-linux-gnueabi-gccでコンパイルする必要があります" *?おそらく便利のため、U-BootとLinuxカーネルが同じツールチェーン(たとえばBuildroot)でコンパイルされているのを見てきました。しかし、私は通常、U-Bootのようなブートローダにはベアメタルのツールチェーンを使用します(つまり、私は2つのツールチェーンを構築します)。 – sawdust

+0

私は[this](http://processors.wiki.ti.com/index.php/AM335x_U-Boot_User's_Guide#Building_U-Boot)のような例から推測しました。 uBootは実際にどちらかでコンパイルできると言っていますか?カーネルはどうですか? –

+1

はい。同じ取引。 – sawdust

答えて

0

U-Bootは、Linuxの設計理念を可能な限り反映するように設計されています。同じ設定システム、一般的なディレクトリ構造などを使用します。LinuxといくつかのAPIを共有します - include/linuxディレクトリを参照してください。上記のコメントとして、ABIの互換性は今のところ問題ではありませんが、Linuxコンパイラを使用することはU-Bootにとって哲学的に不適切ではありません。

関連する問題