2016-11-11 9 views
-2

ELFファイル(実行形式およびリンク形式)の生成は、ネイティブcコンパイラとクロスコンパイラで異なります。ネイティブCコンパイラとクロスコンパイラでのELFファイルの使用ウィキペディアから組み込みシステムでのELFファイルの使用?

答えて

1

ELFは実行ファイル、オブジェクトコード、 共有ライブラリ、およびコア・ダンプのための共通の標準的なファイル形式です。

ネイティブコンパイラとクロスコンパイラのどちらを使用するかは、elfファイルの生成方法とは関係ありません。クロスコンパイラは、コンパイル時に現在使用しているものとは異なるHWプラットフォーム用にコンパイルしていることを考慮に入れます。

2

コンパイラの仕事は理想的に高い方から低い方へ変換することです。 JAVAからバイトコードなどのC言語からアセンブリ言語へファイルを書き出し、ファイルに出力します。通常は、コンパイラは通常、アセンブラに供給されるアセンブリ言語(テキスト)を出力する(厳密ではなく、厳密な規則ではありません)が、elfやcoffなどになります。あなたが情報を保存するファイル形式を必要としないかどうか、情報がバイナリ(マシンコード)になったときには、何らかのファイル形式、すべてのファイル形式が必要です。コンパイラの作成者/設計者は、サポートしたいファイル形式を選択することができます。elfは十分に一般的であり、うまく機能するので、悪い選択ではありません。

コンパイラとはまったく関係ありません。アセンブラとリンカの出力を格納するために使用できるファイル形式です。いくつかのファイル形式が必要です。

ツールチェーンは、ターゲットまたはプラットフォームの組み合わせによって異なるデフォルトファイル形式を選択する可能性があります。例えば、Windowsでgnuを使用すると、.EXEファイルは同じgnuソースでデフォルトファイルLinuxコンパイラとしてコンパイルされたときの形式。そして、それに対する自然な拡張は、gnuツールが、ターゲットプロセッサやプラットフォームの他の組み合わせに使うデフォルトのファイルフォーマットと異なるかもしれないということです。

特にElfは少し一般的ですが、ターゲットプロセッサとプラットフォームの組み合わせによって特定のマーカーや機能が使用される可能性があるため、elfの味が異なる場合があります。 objcopyを使用してインテル16進形式を調べると、ターゲットプロセッサのタイプによって出力が変わります。

+0

非常に感謝しています... – sivaraj

関連する問題