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