首页 > 其他 > 详细

HelloWorld生命周期

时间:2019-09-03 01:38:37      阅读:83      评论:0      收藏:0      [点我收藏+]

深入理解计算机系统PDF:[https://pan.baidu.com/s/1bOfnYWg_GnskTc5V5VGeXg]

1. hello程序从源文件开始的。

此阶段的任务就是完成编辑hello.c文件。
技术分享图片

2. hello.c经过编译器驱动程序转化成可执行文件

技术分享图片
当源文件编辑完成并保存之后,GCC会读取hello.c并把它翻译成一个hello的可执行文件。
这个过程可分为四个阶段:

①.预处理阶段

预处理器(cpp)执行#开头的命令(#命令通常都是一些复制粘贴和事情),修改原C程序,得到一个新的C程序(通常是以 .i 做为文件扩展名)。

②.编译阶段

编译器(ccl)将文本文件hello.i翻译成文本文件hello.s,其实也就是将C语言源代码转化成汇编的源代码而已。

③.汇编阶段

接下来,汇编器(as)会将hello.s翻译成机器语言指令,并把这些指令打包成可重定位目标程序,并把结果保存在二进制文件hello.o里(在符号表重定向的时候会发生很多事情,比如初始化之类的,以后再补)。其实也就是把汇编代码变成只含0和1的二进制文件。

④.链接阶段

我们的hello程序调用了printf()这个函数。而这个函数存放在一个预编译好了的printf.o的文件里。所以,链接器(ld)会帮我们将printf.o以某种形式合并到hello.o中,最后生成的就是hello可执行文件了,然后它就可以由系统加载到内存中了。
至此,编译阶段就算是大功告成了。
技术分享图片

HelloWorld生命周期

原文:https://www.cnblogs.com/shing-virus/p/11449561.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!