程序编译的四个过程

这篇博客详细介绍了编译一个C语言程序的过程,包括预处理(处理宏定义、条件编译指令和头文件包含)、编译(将预处理后的代码转换为汇编语言)、汇编(将汇编语言转化为机器语言指令的二进制文件)和链接(合并所有必要的目标文件,生成可执行文件)。通过实例展示了gcc编译器在每个步骤中的使用。
摘要由CSDN通过智能技术生成

引言

hollo.c是大部分程序员写的第一个程序,本篇博客将介绍编译运行hello.c,操作系统将做的事情。

编译系统

hello.c是一个高级C语言代码,格式如下

#include <stdio.h>
int main()
{
printf("hello world\n");

return 0;
}

在系统中运行该程序,则必须把每一条C语言代码转化成低级机器语言指令,这些指令按照可执行目标文件的格式排列好,并在磁盘上以二进制文件的形式储存起来,形成可执行目标文件。
在我们使用的例如visual studio和devc++等软件,替程序员做好了这一切,如果我们使用gcc编译器可以逐步的看到,程序的变化。
在这里插入图片描述
在这里GCC驱动文件读取hello.c,并生成了可执行文件hello,这其中可以分为四个步骤,预处理,编译,汇编,链接,看起来比较乱,我们下面分别对其说明

预处理

命令:gcc -E hello.c -o hello.i
预处理是读取c源程序,对其中的伪指令(以#开头的指令,也就是宏)和特殊符号进行“替代”处理;经过此处理,生成一个没有宏定义、没有条件编译指令、没有特殊符号的输出文件。这个文件的含义同没有经过预处理的源文件是相同的&#

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值