gccを実行可能ファイルにコンパイルするプロセス

test.cファイルを編集します

#include <stdio.h>

int main()
{
    
    
	printf("this is test program\n");
	return 0;
}

1.前処理段階

この段階で、コンパイラは前処理部分をプログラムにコンパイルします。「gcc-E」オプションは、前処理のみが実行され、他の処理は実行されないことを意味します。次のコマンドは、前処理されたプログラムファイル(test.i)を生成します。
gcc -E test.c -o test.i

2.コンパイルフェーズ

この段階で、gccは最初に、コードに文法エラーがあるかどうか、およびコードが標準であるかどうかを確認します。正しいことを確認した後、gccはコードをアセンブリ言語に変換します。「gcc-S」オプションは、アセンブリコード(test.sファイル)のコンパイルと生成のみを意味します。
gcc -S test.i -o test.s

3.組み立て段階

この段階で、コンパイルされたアセンブリファイルはOBJオブジェクトファイルに変換されます。「gcc-c」オプションは、リンクせずにコンパイルし、オブジェクトファイル「test.o」を生成することを意味します
gcc -c test.s -o test.o

4.リンクフェーズ

この段階で、アセンブリ段階で生成されたOBJオブジェクトファイル、システムライブラリのOBJファイル、およびライブラリファイルをリンクして、最終的に実行可能プログラムを生成します。たとえば、ここでprintf印刷を実現するには、リンク関数ライブラリを使用します。
gcc test.o -o test

おすすめ

転載: blog.csdn.net/sxtdzj/article/details/103453061