C语言 程序是如何跑起来的

        有没有想过一个程序是如何运行的?平时点击运行,就直接出来了
在这里插入图片描述

       那么它在点击运行到生成可执行程序这一期间到底经历了什么让我们一探究竟


翻译

       在翻译环境下会进行以下操作,预编译,预处理,编译,汇编,链接

预编译

在这个间断进行了头文件的包含,宏替换,删除注释


头文件包含

       在写程序的时候用到一些函数时不是要包头文件,那有想过为啥包头文件呢?
       早期的时候一切功能都是要自己写,如在我需要打印就要写一个printf。他也要打印,xxx也要打印,用的人多了为了方便就封装了起来 (入鲁迅说的:世界上本没有路走的人多了变成了路) ,大家看自己的安装目录下会发现好多的 .h 的文件,里面包的就是函数的声明


编译

       在这个间断进行了C语言代码转汇编代码,语法分析,词法分析,语义分析,符号汇总


符号汇总:

        在一个文件中每个函数都有他的符号,不管是自定义还是库函数,他们会聚集在一起

汇编

这里是汇编代码转二进制代码,
合并段表
生成符号表,吧文件里面每个函数的符号做成一张表


链接

合并段表
符号表合并,和重定位

吧无用的符号替换(调用函数接口所生成是符号是无用的),合并多个文件的符号表,合成一个新的符号表

运行

生成可执行程序

猜你喜欢

转载自blog.csdn.net/Legwhite/article/details/120619312
今日推荐