c程序的编译与链接

c程序的源文件和头文件内容都是代码,代码是文本信息,但是电脑能执行的是二进制指令。因此,要使电脑能读懂你写的代码,这就需要编译与链接的过程。

在ANSI C(标准c)的任何一种实现中,存在两个不同的环境,分别是翻译环境和执行环境。

1.翻译环境中,源代码被转化成可执行的机器指令(二进制指令)。由编译器执行。

2执行环境则用于实际执行代码。 由计算机操作系统执行。

翻译环境由编译与链接两个大的过程组成。编译又由预处理(预编译)、编译、汇编这三个过程组成。

在linux环境下以gcc为例

一、在预处理阶段,源文件和头文件都会被处理为以.i为后缀的文件。

 

 预处理阶段主要处理源文件中以#开头的预处理指令(如#include,#define等)。处理的规则如下:

1.将所有的#define删除,并将代码里的宏替换。

2.处理所有的条件编译指令如#if、#ifdef等。

3.处理#include预处理指令,将包含头文件的内容插入到该预编译的位置,

4.删除所有注释。

5.还有很多细节,不展开说明。

二、编译过程将预处理文件进行词法分析、语法分析、语义分析及优化等一系列操作,从而生成汇编代码文件。

三、编译结束后就是汇编,从而生成目标文件。

四、目标文件和链接库通过链接器,产生可执行程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值