ARM アーキテクチャ用のバイナリを生成するクロス コンパイル ツール チェーンがあるとします。
ツールチェーンは次のようになります (Linux を搭載した X86_64 マシンで実行):
- arm-linux-gnueabi-gcc.exe : ARM で実行される Linux のクロス コンパイル用。
- arm-gcc.exe : ARM を対象とするベアメタル クロス コンパイル用。
...そして、ARM でのクロス コンパイル用の他のツールが多数あります。
私が興味を持っているポイントは次のとおりです。
- (E) バイナリ間の ABI の違い (ある場合)
- ベアメタルの場合の制限 (動的メモリ割り当て、C++ の場合の静的コンストラクタの使用、スレッド モデルなど)
- それぞれに固有の情報 (デバッグ情報のサポートなど) に関する 2 つのケース間のバイナリレベルの違い。