编译和链接基础的快速了解和掌握

本文介绍了计算机编程中的关键概念,包括翻译环境(源代码到机器指令)、编译过程(预处理、编译、汇编)、链接机制以及多文件项目管理。通过逐步解析,帮助初学者理解程序从源代码到可执行文件的完整流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

知识特点:

任何学习阶段可入,过程容易了解,本篇文字十分简洁易懂,学习计算机初期可以只掌握过程,本篇内容足矣 记得点赞关注哦!!!

部分知识含有个人简单理解总结以方便学习有红字备注

若遇到部分知识点仍然无法理解,可以在后台私信询问,若有错误,欢迎大佬指教

1.翻译环境和运⾏环境

翻译环境:源代码转换为可执⾏的机器指令(⼆进制指令)

执⾏环境:实际执⾏代码

2.翻译环境

翻译环境:编译(预处理)+链接

(有些书也叫预编译、编译、汇编三个过程)

•注意:1.在Windows环境下的⽬标⽂件的后缀是.obj,Linux环境下⽬标⽂件的后缀是.o

•2.多个⽬标⽂件和链接库⼀起经过链接器处理⽣成最终的可执⾏程序。

•3.链接库是指运⾏时库(它是⽀持程序运⾏的基本函数集合)或者第三⽅库。

(链接库如果以后需要会专门出一篇文章,这里理解就可

3.编译器

4.编译过程

4.1预处理(预编译)

源⽂件,头⽂件  会  被处理成为   .i为后缀的⽂件

1.将所有的#define删除,并展开所有的宏定义。

2.处理所有的条件编译指令,如:#if、#ifdef、#elif、#else、#endif。

3.处理#include预编译指令,将包含的头⽂件的内容插⼊到该预编译指令的位置。这个过程是递归进

4.删除所有的注释

5.添加⾏号和⽂件名标识,⽅便后续编译器⽣成调试信息等,或保留所有的#pragma的编译器指令,编译器后续会使⽤。

其实基本上就是  处理#  添加文件信息

注意:可查看预处理后的.i⽂件来确认  宏定义,头⽂件是否包含正确

4.2编译

词法分析(字符分割

语法分析(小学老师解释每个词语都是什么意思,如何组到一起的,等同数学分步计算

语义分析(声明和类型的匹配,类型的转换)

优化

5.汇编

gcc -c test.s  -o test.o

汇编器 将汇编代码转转变成机器可执⾏的指令,每⼀个汇编语句⼏乎都对应⼀条机器指令。

根据汇编指令和机器指令的对照表⼀⼀的进⾏翻译,也不做指令优化。

一句一句做翻译

6.链接

地址,空间分配,符号决议,重定位等

解决的是⼀个项⽬中多⽂件、多模块之间互相调⽤的问题

如果想更深入了解可阅读《程序的⾃我修养》书籍

完-

(上篇文章提前祝大家5.1快乐了,那这篇文章就祝大家都能抢到回家的票吧哈哈哈

希望没有抢到票的友友们都能候补成功)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值