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

Posted 一个正直的男孩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 程序是如何跑起来的相关的知识,希望对你有一定的参考价值。

        有没有想过一个程序是如何运行的?平时点击运行,就直接出来了

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


翻译

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

预编译

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


头文件包含

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


编译

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


符号汇总:

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

汇编

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


链接

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

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

运行

生成可执行程序

以上是关于C语言 程序是如何跑起来的的主要内容,如果未能解决你的问题,请参考以下文章

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

程序是怎样跑起来的第7章有感

C代码如何跑起来(程序编译和预处理)

我用c语言把何同学的代码跑起来了

我用c语言把何同学的代码跑起来了

《程序是怎样跑起来的》第八章