このセクションでは、 MicroBlaze™ および Cortex® A9、A53、A72、R5 プロセッサのコンパイラに共通した機能について説明します。次の図は、GNU ツールのフローを示しています。
図 1. GNU ツール フロー
GNU コンパイラの名前は次のようになります。
-
MicroBlaze の場合
mb-gcc
-
arm-none-eabi-gcc
コアの場合 Cortex -
Cortex-A53 および Cortex-A72 の場合
aarch64-none-elf-gcc
-
Cortex-R5F の場合
armr5-none-eabi-gcc
GNU コンパイラはラッパーで、次のプログラムを呼び出します。
- プリプロセッサ (
cpp0
) - コンパイラにより最初に呼び出され、すべてのマクロをソース ファイルおよびヘッダー ファイルでの定義に置き換えます。
- マシンおよび言語別のコンパイラ
- プリプロセスされたコード、つまり第 1 段階で出力されたコードに対して実行します。言語別のコンパイラには次の 2 つがあります。
- C コンパイラ (
cc1
) - 入力 C コードの最適化の大部分を実行し、アセンブリ コードを生成します。
- C++ コンパイラ (
cc1plus
) - 入力 C++ コードの最適化の大部分を実行し、アセンブリ コードを生成します。
- C コンパイラ (
- アセンブラー
- アセンブラー コードには、アセンブリ言語のニーモニックが含まれます。アセンブラーは、これらのニーモニックを機械語に変換します。コンパイラで生成されたラベルの一部も解決し、オブジェクト ファイルを生成してリンカーに渡します。アセンブラー実行ファイルの名前は次のようになります。
-
MicroBlaze の場合
mb-as
-
arm-none-eabi-as
コアの場合 Cortex -
Cortex-A53 および Cortex-A72 の場合
aarch64-none-elf-as
-
Cortex-R5F の場合
armr5-none-eabi-as
-
MicroBlaze の場合
- linker
- アセンブラーで生成されたオブジェクト ファイルをリンクします。コマンド ラインでライブラリが指定されている場合は、アセンブラーからの関数をリンクすることにより、コード内の未定義の参照の一部を解決します。リンカー実行ファイルの名前は次のようになります。
-
MicroBlaze の場合
mb-ld
-
arm-none-eabi-ld
コアの場合 Cortex -
Cortex-A53 および Cortex-A72 の場合
aarch64-none-elf-ld
-
Cortex-R5F の場合
armr5-none-eabi-ld
-
MicroBlaze の場合
次のセクションでは、これらの実行オプションについて説明します。
- よく使用されるコンパイラ オプション: クイック リファレンス
- リンカー オプション
- MicroBlaze コンパイラの使用法とオプション
- MicroBlaze リンカー オプション
- Arm コンパイラの使用法とオプション
注記: この後からは、GCC という場合は MicroBlaze コンパイラの
mb-gcc
を、G++ という場合は MicroBlaze C++ コンパイラの mb-g++
のことを示します。