C 言語プログラムのコンパイルとリンクに関する簡単な説明

C 言語プログラムのコンパイルとリンクに関する簡単な説明

1. 必要性

なぜ C 言語で書かれたプログラムをコンパイルしてリンクする必要があるのでしょうか? 言い換えれば、なぜ高級言語で書かれたプログラムをコンパイルしてリンクする必要があるのでしょうか?
コンピュータ産業の発展により、現代のコンピュータは実際には機械語しか認識できなくなりました。機械語とは、コンピュータの命令コードを直接短縮してバイナリで表現した言語で、コンピュータが直接認識して実行できる唯一の言語です。
私たちが書いたプログラムは次のとおりです。

#include <stdio.h>
int main()
{
    
    
	printf("hello world!");
	return 0;
}

すべての発言はテキストで書かれます。
まるで方言で話しているようで、フォーマルな場面での会話は北京語モードに切り替える必要があります。コンピュータによるコンパイルとリンクには変換の効果があります。私たちの方言(言語になる)を北京語(機械語)に変換します。コンピュータにそれを認識させてから、プログラムを通常どおり実行します。

2. プロセス

Bit Employment Course コースウェアでコンパイル、リンク、プロセスを説明上の図1は、GCC コンパイラーでのコンパイルとリンクのプロセスを示しています。
次の2では各工程の概要を説明します。
前処理段階: プリプロセッサ (cpp) は、文字 # で始まるコマンドに従って元の C プログラムを変更します。
コンパイル段階: コンパイラ (eel) は、テキスト ファイル xxx.i を、アセンブリ言語プログラムを含むテキスト ファイル xxx.s に変換します。
アセンブラ段階: 次に、アセンブラ(as)はxxx.sを機械語命令に変換し、これらの命令をリロケータブルオブジェクトプログラムobj(リロケータブルオブジェクトプログラム)と呼ばれる形式にパッケージ化し、オブジェクトファイルxxx.oに保存します。
リンク段階: リンカ (ld) は、内部ライブラリ関数を呼び出して形成された xxx.a ファイルを処理し、アセンブリ段階でファイル xxx.o とリンクし、最終的に実行可能ファイルを形成します。


  1. ビット雇用コースウェア; ↩︎

  2. コンピュータシステムについての深い理解↩︎

おすすめ

転載: blog.csdn.net/BlankXiangzw/article/details/133363149