当前位置: 首页 > article >正文

预处理、编译、汇编和链接

编写完成一个C/C++程序后,想要运行起来,必须要经过四个步骤:预处理、编译、汇编和链接。每个步骤都会生成对应的文件。预处理后生成 .i 文件,编译后生成 .s文件, 汇编后生成 .o文件, 链接后生成可执行二进制文件


预处理把一些#define的宏定义完成文本替换,然后将#include的文件里的内容复制到.cpp文件里,如果.h文件里还有.h文件,就递归展开。在预处理这一步,代码注释直接被忽略。


编译只是把我们写的代码转为汇编代码,它的工作是检查词法和语法规则,所以,如果程序没有词法或则语法错误,那么不管逻辑是怎样错误的,都不会报错。


汇编过程将上一步的汇编代码(main.s)转换成机器码(machine code),这一步产生的文件叫做目标文件(main.o),是二进制格式。


C/C++代码经过汇编之后生成的目标文件(*.o)并不是最终的可执行二进制文件,而仍是一种中间文件(或称临时文件),目标文件仍然需要经过链接(Link)才能变成可执行文件。


http://www.kler.cn/a/392175.html

相关文章:

  • 利用滑动窗口解题
  • hadoop大数据平台
  • 操作系统离散存储练习题
  • Java程序中如何输入数据
  • 智享AI 无人自动直播的崛起 ,引领智能互动与自动带货新潮流!
  • 【Android、IOS、Flutter、鸿蒙、ReactNative 】约束布局
  • 力扣 二叉树的直径-543
  • 详解Gemini API的使用:在国内实现大模型对话与目标检测教程
  • SpringBoot 实战:文件上传之秒传、断点续传、分片上传
  • 比速M3比速T3比速T5北汽制造007 勇士 锐铃维修手册电路图资料更新线路接线
  • 高效编程训练:Spring Boot系统设计与实践
  • 试用免费界面美化程序SeelenUI,让你的Windows变得更美
  • Spring 解析xml中的 BeanDefination 大概过程
  • 每日一练:二分查找-x的平方根
  • Unity3D学习FPS游戏(11)敌人AI巡逻(NavMesh)
  • C++多态及其在设计模式中的作用举例
  • 【webrtc】 RTP 中的 MID(Media Stream Identifier)
  • Spring Boot编程训练系统:构建企业级应用
  • 基于BILSTM及其他RNN序列模型的人名分类器
  • 革新农业未来!Dimitra生态币价双双腾飞在即
  • AI 大模型在软件开发中的角色
  • IntelliJ IDEA 启动报 Unsupported Java Version
  • HTTP 客户端怎么向 Spring Cloud Sleuth 传输跟踪 ID
  • 彻底理解ARXML中的PDU
  • 我们的第2个原创项目上线啦
  • ubuntu20.04 解决Pytorch默认安装CPU版本的问题