编译链接过程

我们应该知道,一个.c文件经过编译链接过程会变成.exe文件(windows下)和.out文件(Linux下)的可执行文件。
我认为掌握编译链接原理对程序员来说很是重要。
首先,这样一个过程可以大致分为两个过程,即编译和链接过程。
对于编译过程又可以细分为预编译,编译,汇编三个过程。


一.预编译
预编译过程主要处理那些源代码文件中以“#”开头的预编译指令,比如:头文件“#include”,宏定义“define”。。
主要处理规则如下:

  1. 将所有的“#define”删除,并且展开所有的宏定义。
  2. 处理所有条件编译指令,比如:“#if”,“ifdef”。。
  3. 处理“#include”预编译指令,将被包含的文件插入到该预编译指令的位置。
  4. 把所有注释用空格替换。
  5. 添加行号和文件名标识。
  6. 保留所有的#pragma编译器指令。

在预编译完成之后我们可以得到的是一个.i文件。
在linux中,预编译.i文件的获取可以用 gcc -E main.c -o main.i 命令获得。
这里写图片描述
这时候如果你打开了main.i文件,你会发现前面好几百行我们并不认识的乱码,而我们的程序只在最后出现占一点点。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值