2

別のコンパイラ CC を使用しています。GCC のようには機能しません。

GCC を使用していたときは、「gcc -o exe_filename source_filename」を実行でき、出力は exe ファイルになります。

CC を使用する場合、2 つの手順が必要です。まず、ソース ファイルをコンパイルし (.c ファイルと .h ファイルが含まれているとします)、.lis ファイルと .obj ファイルを作成します。次に、.exe ファイルを作成するリンク コマンドを実行します。

LIS、OBJ、EXE ファイルの関係は? 不要なファイルを含めずにexeを別のマシンで使用したい場合、どのファイルが必要なのか疑問に思うので、これを尋ねます。LIS と OBJ がコンパイルのみに使用された場合、別のマシンでは必要ありません。

4

4 に答える 4

7

コンパイラーはCファイルを受け取り(参照されるHファイルをインクルードし)、オブジェクト(OBJ)ファイルとリスト(LIS)ファイルを生成します。オブジェクトファイルにはコードとデータが含まれていますが、未解決の外部参照があります。リストには通常、行番号、エラーおよび警告メッセージ、およびタイプや変数の相互参照などのオプションのセクションが含まれます。

リンカはオブジェクトファイルを結合し、ライブラリへの外部参照を解決します。結果は実行可能(EXE)イメージです。(または、ライブラリを作成するときに共有可能なイメージ。)

アプリケーションを実行するには、実行可能ファイルのみをあるシステムから別のシステムにコピーする必要があります。このリストは、適切に相関する行番号を提供するため、エラーメッセージの解釈に役立つ場合があります。このオブジェクトは、ライブラリの変更のためにアプリケーションを再リンクする必要がある場合、特にターゲットシステムのバージョンが元のシステムよりも古い場合に役立ちます。

于 2013-01-03T16:47:16.103 に答える
3

OBJ ファイルは、リンカーによって相互に「リンク」され、EXE に変換される形式のコンパイル済み C ファイルです。

コンパイル -> OBJ -> リンク -> EXE

LIS ファイルは、コンパイラが最終的にコンパイルする C の単なる情報出力です。

コンパイルとリンクが完了したら、必要なのは EXE だけです

于 2013-01-03T07:34:29.703 に答える
0

他のファイルは必要ありません。exe自体は正常に動作します。

于 2013-01-03T07:35:52.737 に答える
0

LISについてはよくわかりません。ただし、OBJ と EXE の違いは、OBJ ファイルには未解決のシンボルが含まれている可能性があり、EXE ファイルではすべてのシンボルがリンクされて解決されていることです。

別のマシンにも同じハードウェアがある場合は、直接exeを使用して実行できます。それ以外の場合は、クロスコンパイルする必要があります

于 2013-01-03T07:38:40.967 に答える