C从源码到运行发生了哪些事

Posted 092000

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C从源码到运行发生了哪些事相关的知识,希望对你有一定的参考价值。

一个C/C++程序从源代码到可执行程序主要经历了四个阶段:

  ①预处理。包括展开宏、处理#include,#if,#ifdef等指令、删除注释、还有一些其他操作。相关命令:gcc -E或cpp

  ②编译。对预处理文件进行分析并生产汇编代码,主要包括语法分析、语义分析、汇编代码生成、(源/汇编)代码优化。相关命令:gcc -S

  ③汇编。根据编译产生的汇编代码生成机器指令,过程相当于是根据汇编语法进行翻译。相关命令:gcc -c或as

  ④链接。用链接器链接程序运行需要的目标文件和库文件,生成可执行文件。链接分为动态链接和静态链接。相关命令gcc或ld

 

整个过程可以用下面的流程图来表示:

 

要注意对于静态链接库,在进行链接步骤时,相关实现代码会融合到a.out中;而对动态链接库,在链接时,相当于在程序中进行了标记,并没有把具体实现代码融合进来,所以在程序运行的时候,会调用具体的实现代码。简而言之,静态链接库具有时间优势,而动态链接库具有空间优势。通常会优先考虑用动态链接库。

 

以上是关于C从源码到运行发生了哪些事的主要内容,如果未能解决你的问题,请参考以下文章

[转]nginx启动期都做了哪些事

dubbo源码分析 之 服务本地暴露

[webpack]源码解读:命令行输入webpack的时候都发生了什么?

如何将源码包的项目导入myeclipse

#从源码到可执行程序

7RocketMQ 源码解析之 Broker 启动(下)