一个C语言程序的编译过程

这是一个再简单不过的C语言程序:

#include <stdio.h>

int main()
{
    printf("hello world!\n");
    return 0;
}

执行gcc test.c,就使一个源文件变成了可执行文件,这个步骤我们很熟悉,但是从一个源文件(.c文件)到可执行程序到底经历了哪几步,每一步具体做了什么,这是我想要总结一下的:

一:预处理
使用-E选项:gcc -o test.i -E test.c
预处理阶段主要做了处理“#”的过程:有头文件展开,宏替换,条件编译,去掉注释等。

二:编译
使用-S选项:gcc -o test.s -S test.c
编译阶段将高级语言翻译成机器语言,生成对应的汇编代码。

三:汇编
使用-c选项:gcc -o test.o -c test.c
汇编阶段主要将源文件翻译成二进制文件。

四:链接
链接过程主要将翻译成的二进制文件与需要用到的库链接。

gcc的这三个选项不太好记,我有一个窍门,就是ESc,刚好就是键盘上的esc键,这样就很快记住了。

猜你喜欢

转载自blog.csdn.net/han8040laixin/article/details/81559727