.c文件的一生的经历

在我们写好一个.c文件之后怎样去变为一个.exe文件呢,在平时我们都是直接一个编译运行就直接将.c文件生成到.exe文件,我们做起来很简单,其实实现过程相当的复杂。
总的来说一个.c文件编程一个.exe文件需要经历一下的四个步骤:预处理-编译-汇编-链接
预处理
预处理的作用:

  • 对头文件进行展开(头文件文本复制)
  • 宏替换
  • 条件编译
  • 去掉注释

  • 在linux下我们使用gcc -E对.c文件进行预处理,-E就是只进行预处理,
    头文件包括了< > " " 系统头文件和第三方库头文件,但是在我们分文件编写的时候也许会重复使用同一个头文件,这时候我们使用#pargma once 或者使用#ifdef #endif来防止头文件重复编译。

编译
语义语法没有错的时候我们把源代码变为汇编代码,在linux下我们使用gcc -S只进行编译。小编也不是太懂汇编语言,这里我们就不详细介绍
汇编
将汇编代码转成二进制机器指令;使用gcc -C
链接
把所有得到的目标文件和依赖文件进行汇总,得到最终可执行文件
库文件:用我的话说就是集合可大佬缩写的很多标准函数实现的机器指令代码集文件,他又分为了两种

  • 静态链接
    静态链接生成可执行代码,连接静态库,其实就是将库中的代码拷贝带了我们的代码中,这样可以使我们不依赖这个库,但是我们的资源就浪费的特别严重(其实就是编译时间和占用空间)
  • 动态链接
    动态链接是生成可执行程序,链接动态库,只是写入了函数的符号,并没有将整个代码拷贝到了我们的代码中,只会拷贝动态库的符号。这样我们就可以减小我们的开支,但是我们就会大幅度受到这个库的影响。
    当我们链接成功的时候我们的.c文件就可以编程一个.exe文件,这就是一个.c文件的一生。

猜你喜欢

转载自blog.csdn.net/boke_fengwei/article/details/88724548