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

C/C++简单编译原理

我们写的头文件和.cpp文件究竟是如何在电脑中运行的?

先明确几个文件类型:

1、头文件(.h .hpp)

        第三方头文件、系统头文件、自编头文件……

2、编译单位(.cpp .c cu)

        自己写的脚本文件

3、目标文件(.obj)

        每一个编译单位都会被编译为一个目标文件

4、静态库(.lib)

        系统静态库,第三方静态库

5、生成文件(.exe  .so  .dll)

        目标文件与其所用到的静态库中的内容共同链接打包为生成文件

6、动态库(.so .dll)

        第三方动态库,在运行时与生成文件动态链接

编译过程

源程序(hello.c)-预处理(gcc -E hello.c -o a.c)【控制台指令】——>

源程序(a.c)-编译(gcc -S a.c -o a.s)——>

汇编程序(a.s)-汇编(gcc -c a.s -o a.o)——>

二进制程序(a.o)-链接(gcc a.o -o a.exe)——>可执行文件(a.exe)

                                        ⬆

                                C语言库文件

预处理

1、执行源程序中的include方法,将包含的头文件直接全数复制到源程序中。

2、执行宏方法

预处理后仍然为源程序,文件类型不变

编译

将高级语言转化为汇编语言

汇编

将汇编语言转化为二进制的计算机语言,这里得到的文件为上述提到的目标文件

链接

将程序中所应用到的库(头文件)中的对应程序内容打包整合,输出可执行文件

http://www.lryc.cn/news/454963.html

相关文章:

  • 文件处理不再难:带你轻松攻克C语言文件操作
  • Unity3D 单例模式
  • 解析TMalign文本文件中的转换矩阵
  • vue.js组建开发
  • D29【python 接口自动化学习】- python基础之输入输出与文件操作
  • jQuery——平滑翻页
  • 二叉树--DS
  • State of ChatGPT ---- ChatGPT的技术综述
  • 构建高效新闻推荐系统:Spring Boot的力量
  • 如何使用ipopt进行非线性约束求目标函数最小值(NLP非线性规划)内点法(inner point method)
  • 【Unity学习笔记】解决疑似升级Win11或使用Unity6导致Unity旧版本无法打开的问题
  • 回归分析在数据挖掘中的应用简析
  • 【Node.js】worker_threads 多线程
  • 贪心算法c++
  • 【STM32】 TCP/IP通信协议(3)--LwIP网络接口
  • 15分钟学 Python 第39天:Python 爬虫入门(五)
  • 使用Pytorch构建自定义层并在模型中使用
  • 学习记录:js算法(五十六):从前序与中序遍历序列构造二叉树
  • qt使用QDomDocument读写xml文件
  • Oracle架构之表空间详解
  • springboot整合seata
  • 鸿蒙开发(NEXT/API 12)【二次向用户申请授权】程序访问控制
  • docker export/import 和 docker save/load 的区别
  • 明星周边销售网站开发:SpringBoot技术全解析
  • STM32+ADC+扫描模式
  • R语言绘制散点图
  • 安装最新 MySQL 8.0 数据库(教学用)
  • 微信小程序开发-配置文件详解
  • TCP/UDP初识
  • 【大数据】在线分析、近线分析与离线分析