一个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键,这样就很快记住了,而三个选项对应的命名风格,为iso。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值