用C语言构建一个可执行程序的流程 Posted 2021-01-28 CH520 -- Cnblogs。
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言构建一个可执行程序的流程相关的知识,希望对你有一定的参考价值。
1、流程图
从用C语言写源代码,然后经过编译器、连接器到最终可执行程序的流程图大致如下图所示。
2、编译流程
首先,我们先用C语言把源代码写好,然后交给C语言编译器。C语言编译器内部分为前端和后端。
2.1 编译器前端
前端负责将C语言代码进行词法和语法上的解析,然后可以生成中间代码。
中间代码这部分不是必须的,但是它能够为程序的跨平台移植带来诸多好处。比如,同样的一份C语言源代码在一台计算机上编译完之后,生成一套中间代码。然后针对不同的目标平台(比如要将这一套代码分别编译成 ARM 处理器的二进制机器码、MIPS 处理器的二进制机器码以及 x86 处理器的二进制机器码),只需要编写相应目标平台的编译器后端即可。
所以,这么做就可以把编译器的前端与后端剥离开来(这在软件工程上又可称为解耦合),不同处理器厂商可以针对自家的处理器特性,对中间代码生成到目标二进制代码的过程再度进行优化。
2.2 编译器后端
接下来,由C语言编译器后端生成源文件相应的目标文件。
目标文件在 Windows 系统上往往是.obj文件,而在 Unix/Linux 系统上往往是.o文件,C语言的源文件在所有平台上都统一用.c文件表示。
2.3 链接器
最后,对于各个独立的目标文件,通过连接器将它们合并成一个最终可执行文件。
连接器与C语言编译器是完全独立的。所以,只要最终目标代码的 ABI(应用程序二进制接口)一致,我们可以把各个编译器生成的目标代码都放在一起,最后连接生成一个可执行文件。比如:
有些源代码可用 GCC 编译;
有些使用 Clang 编译;
还有些汇编语言源文件可直接通过汇编器生成目标代码。
以上是关于用C语言构建一个可执行程序的流程的主要内容,如果未能解决你的问题,请参考以下文章
用C语言构建一个可执行程序的流程!
C语言开发过程中目标代码文件可执行文件和库
用c语言编完程序怎么生成exe可执行文件?
在c语言中“可执行程序”是啥意思?
程序编译流程
写了一个程序可以编译c语言,怎么自动再链接然后执行生成的可执行文件?