编译链接过程简介
创始人
2025-05-30 17:46:48

文章目录

    • 1.初始编译器
    • 2.编译过程图解
    • 3.预编译
    • 4.编译
    • 5.汇编
    • 6.链接

1.初始编译器

在这里插入图片描述

2.编译过程图解

在这里插入图片描述

3.预编译

1.处理所有的注释,以空格代替
2.将所有的#define删除,并且展开所有的宏定义
3.处理条件编译指令  #if #ifdef #elif #else #endif
4.处理#include,展开被包含的文件
5.保留编译器需要使用的#pragma指令指令实例: gcc -E file. -o file.i

4.编译

对预处理文件进行此法分析,语法分析和语义分析词法分析:分析关键字,标示符,立即数等是否合法语法分析:分析表达式是否遵循语法规则语义分析:在语法饭呢西的基础上进一步分析表达式是否合法
分析结束后进行代码优化生成相应的汇编代码文件指令实例: gcc -S file.i -o file.s

5.汇编

汇编器将汇编代码转变为机器的可以执行指令
每条汇编语句几乎都对应一条机器指令指令实例: gcc -c file.s -o file.o

6.链接

工程中的每个c语言源文件被编译后生产目标文件,这些目标文件是通过链接生成最终的可执行程序
链接器的主要作用是把各个模块之间相互引用的部分处理好,使得哥哥模块之间能够正确的衔接
静态链接:目标文件直接链接进入可执行程序
动态链接;在程序启动后才动态加载目标文件推荐阅读:

推荐阅读: 静态链接和动态链接的优缺点 多个c文件是如何组织的

相关内容

热门资讯

【职业规划】第一篇:程序员分级... 程序员分级标准与需要的技能 首先声明下,Java程序员的分级并没有统一的标准ÿ...
玩家必用!(wepoke)软件... 亲,新版微扑克这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌特别好,...
玩家必用!(wepoke)软件... 您好.Wepoke靠谱这款游戏可以开挂的,确实是有挂的,需要了解加微【97762250】很多玩家在这...
玩家必用!(wepoke)软件... 您好.DD扑克这款游戏可以开挂的,确实是有挂的,需要了解加微【97762250】很多玩家在这款游戏中...
玩家必用!(wepoke)软件... 玩家必用!(wepoke)软件透明挂,新版aapoker原来真的有挂,详细教程(有挂教学)-哔哩哔哩...