hello程序的生命周期

本文详细介绍了hello程序从源代码到可执行文件的生命周期,包括预处理、编译、汇编和链接四个阶段,阐述了每个阶段的作用和转换过程,通过实际的Linux系统编译示例帮助理解。
摘要由CSDN通过智能技术生成

缘起

在Kernighan和Ritchie的关于C编程语言的经典教程中,他们通过下面所示的hello程序来向读者介绍C。
尽管hello程序非常简单,但是为了让它实现运行,系统的每个主要组成部分都需要协调工作。

#include <stdio.h>

int main()
{
	printf("hello, world\n");
	return 0;
}

通过跟踪hello程序的生命周期——从它被程序员创建开始,到系统上运行,输出简单的消息,然后终止。沿着这个生命周期,简要的介绍编译过程,了解这个过程中干了什么。

程序被其他程序翻译成了不同的格式

hello程序的生命周期是从一个高级C语言程序开始的,因为这种形式能够被人读懂。然而为了在系统上运行hello.c程序,每条C语句都被其他程序转化为一系列低级机器语言指令。然后这些指令按照一种称为可执行目标程序的格式打好包,并以二进制磁盘文件的形式存放起来。目标程序也称为可执行目标文件。
在Unix系统上,从源文件到目标文件的转化是由编译器驱动程序完成的:

linux> gcc -o hello hello.c

在这里,GCC编译器驱动程序读取源程序文件hello.c,并把它翻译成一个可执行目标文件hello。这个翻译过程可分为四个阶段完成,如下图所示。执行这四个阶段的程序(预处理器、编译器、汇编器和链接器)一起构成了编译系统。
在这里插入图片描述
/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值