编译链接过程

server/2024/9/23 9:27:44/

编译链接过程

 

预编译阶段

  1. 删除所有的“#define”,并且展开所有的宏定义;
  2. 处理所有的条件预编译指令,“#if”、“#ifdef”、“#endif”等;
  3. 处理“#include”预编译指令,将被包含的文件插入到该预编译指令的位置;
  4. 删除所有的注释;
  5. 添加行号和文件名标识,以便于编译器产生调试用的符号信息及编译时产生编译错
  6. 误和警告时显示行号;
  7. 保留所有的#pragma 编译器指令,因为编译器需要使用它们。

 

编译阶段

词法分析、语法分析、语义分析,代码优化,汇总符号。

 

汇编阶段

 将汇编指令翻译成二进制格式,生成各个 section,生成符号表。

链接阶段

  1. 合并各个 section,调整 section 的起始位移和段大小,合并符号表,进行符号解析, 给符号分配虚拟地址;
  2. 符号重定位;

 

 


http://www.ppmy.cn/server/34174.html

相关文章

如何面对并发下的bug

整理总结自蒋炎岩老师的b站课程,https://jyywiki.cn/OS/2022/index.html 并发bug与应对 应对bug的方法 在代码里边增加很多检查(加断言) #include "thread.h"unsigned long balance 100;void Alipay_withdraw(int amt) {if (balance > amt) {usleep(…

上位机图像处理和嵌入式模块部署(树莓派4b和mcu的分工与配合)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 树莓派4b从广义上来说,它本身就是一个mini小电脑。我们需要什么软件,就可以apt install去下载即可。这和之前嵌入式linux开…

AI新突破:多标签预测技术助力语言模型提速3倍

DeepVisionary 每日深度学习前沿科技推送&顶会论文分享,与你一起了解前沿深度学习信息! 引言:多标签预测的新视角 在人工智能领域,尤其是在自然语言处理(NLP)中,预测模型的训练方法一直在…

[微信小程序] 入门笔记1-滚动视图组件

[微信小程序] 入门笔记1-滚动视图组件 1.页面&组件&渲染 在小程序是由一个个页面page组成, 而页面又是由一个个组件component组成.和网页类似,这里的组件指的就是输入框<input>,按钮<button>,文本<text>,图片<image>等元素.如果你学过网页一…

RK3568 学习笔记 : 精简 u-boot env 默认复杂的多种引导启动设置

前言 环境&#xff1a; 正点原子 Atompi-CA1 RK3568 开发板、正点原子 DLRK3568 开发板&#xff0c;&#xff08;一时脑热买了两块 RK3568 开发板&#xff09;&#xff0c;Atompi-CA1 RK3568 开发板比较小巧&#xff0c;利于一些前期的嵌入式 Linux 开发学习与实践。 RK3568 开…

以太网基础-IP、ICMP、ARP协议

一、IP协议 参考&#xff1a;rfc791.txt.pdf (rfc-editor.org) IP协议&#xff08;Internet Protocol&#xff09;是TCP/IP协议族中最核心的协议&#xff0c;提供不可靠的、无连接的、尽力而为的数据报传输服务。 IP报文数据头如下 Version&#xff1a;4bit&#xff0c;4表示…

小白入门 CSS 语法规则

文章导读&#xff1a;AI 辅助学习前端&#xff0c;包含入门、进阶、高级部分前端系列内容&#xff0c;当前是 CSS 的部分&#xff0c;瑶琴会持续更新&#xff0c;适合零基础的朋友&#xff0c;已有前端工作经验的可以不看&#xff0c;也可以当作基础知识回顾。 这篇文章给大家…

【银角大王——Django课程——靓号页面的基本操作(列表,新建,删除)】

靓号管理 靓号列表显示表结构根据表结构的需求&#xff0c;在models.py中创建类URL.py编写views.py中 函数编写列表显示HTML页面效果 新建靓号编写&#xff08;添加&#xff09;URL.py编写views.py中 函数编写新建靓号HTML数据校验方式一&#xff1a;&#xff08;正则表达式&am…