c语言编译过程

     C源文生成可执行文件包括预处理(preprocessing)、编译(compilation)、汇编(assembly)、链接(link)四个过程。预处理就是将.c文件生成.i文件,该过程将头#include包含的库文件和头文件在相应位置展开,将#define的宏定义替换,处理#ifdef等条件编译,去掉注释等。编译过程是将.i文件生成.s文件,该过程检查语法,生成汇编文件。汇编过程是将.s文件生成.o文件,该过程将汇编文件翻译成机器可执行的指令文件,汇编过程是独立的,每一个.c文件都会对应一个.o文件。链接过程就是将.o文件生成可执行文件。该过程分为静态链接和动态链接两种方式。静态链接就是链接器将多个.o文件和库文件加载到内存中,生成一个可执行文件。静态链接优点是生成的可执行文件在任何时候都能运行,因为该文件已包含程序执行的所有库文件和对象文件;但缺点也很明显,一是每次库文件更新,所有调用该库的函数都需要重新编译链接,二是一个被多个函数调用的.o文件会在内存区域存在多个副本,浪费空间。动态链接就解决这两个问题,其在程序运行时才根据重定位信息去加载相应的库,且多个函数可共享一个库。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值