首页/新闻资讯/正文详情

编译过程理解

发布时间:2026/11/5 6:31:27 来源:云帆数科 栏目:资讯中心
编译过程理解
编译过程理解1、预处理将每个.cpp文件包含的.h文件内容进行合并生成临时文件temp.cpp然后再开始编译过程。2、qt构建项目过程首先预编译即头文件 被MOC预编译读取到.h文件中含Q_OBJECT宏后会为这个类生成另一个包含元对象支持代码的C源文件moc_dialog.cpp和一个都是宏的moc_predef.h文件这个生成的源文件连同类__实现文件一起被标准C编译器编译、链接、生成可执行文件。补充预编译时会执行这些操作“UIC将.ui预编译为ui_dialog.h文件RCC将.ui预编译为qrc_res.cpp”。3、标准C编译器例如开发套件MSVCMicrosoft Visual C/C编译器.obj目标代码文件开发套件MinGW中的GUN C编译器.o目标代码文件这两个都是Windows环境下的。编译器编译过程简单理解编译器单独为每个.cpp文件创建.obj或.o目标代码文件链接程序将库代码、目标代码、启动文件main文件合并生成可执行文件.outLinux或.exewindows。4、GCCGNU Compiler CollectionGNU编译器套件是由GNU开发的编程语言编译器。GNU编译器套件包括C、C、 Objective-C、 Fortran、Java、Ada和Go语言前端也包括了这些语言的库如libstdclibgcj等。A#include myinc.hB#include “myinc.h”其中A类使用尖括号 B类使用双引号“ ”。对于A类预处理程序cpp在系统预设包含文件目录如/usr/include中搜寻相应的文件而B类预处理程序在目标文件的文件夹内搜索相应文件。5、MinGW全称为Minimalist GNU for Windows是一套允许在Windows环境下使用GCCGNU Compiler Collection编译Windows程序的工具集。它包含了一系列的头文件和库文件使得开发者无需依赖第三方动态链接库即可构建Windows 32位程序。MinGW不仅仅是一个C/C编译器它实际上是一整套GNU工具的集合包括但不限于GCC还有其他GNU程序开发工具如gawk和bison等。6、C Premeir PlusUNIX系统中编译C1预处理预处理器将include的文件与源代码文件合并生成临时文件temp.cpp这是一个翻译单元2编译编译器单独为每个源代码文件创建 目标代码文件.o二进制文件3链接链接器根据函数链接性去找定义然后将库代码、目标代码、启动文件main文件合并生成可执行文件.outLinuxwindows中是.exe。补充从上述图看有一个疑问在编译过程中到底是编译器会根据函数链接性去找定义还是链接器链接器指的是“将库代码、目标代码、启动文件合并”还是“根据函数链接性去找定义”这个问题看另一篇文章“编译器和链接器的分工”。更新第3点已按最终确定的答案描述链接阶段的工作7、对上述第6条的图片个人解释在程序的某个文件中调用一个函数查找该函数定义的过程1通过函数原型查看是外部链接还是内部链接如果是静态的如静态函数static将只在该文件中查找2如果是外部链接性则在所有的程序文件查找2如果程序文件没有找到编译器将在库中查找。

相关推荐

零基础实现IEC61850(七)细说数据更新
零基础实现IEC61850(七)细说数据更新

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 6:31:27

KytyPS5 开源PS5模拟器完全指南:手把手在 PC 上编译并首次启动
KytyPS5 开源PS5模拟器完全指南:手把手在 PC 上编译并首次启动

KytyPS5 开源PS5模拟器完全指南:手把手在 PC 上编译并首次启动 【免费下载链接】KytyPS5 PlayStation 5 translation layer for Windows, Linux and macOS 项目地址: https://gitcode.com/gh_mirrors/ky/KytyPS5 想不装主机、直接在 PC 上玩 PS5 游戏&#x… · 2026/11/5 6:31:27

SuperSplat 高斯泼溅编辑 3 坑排查指南
SuperSplat 高斯泼溅编辑 3 坑排查指南

SuperSplat 高斯泼溅编辑 3 坑排查指南 【免费下载链接】super-splat 3D Gaussian Splat Editor 项目地址: https://gitcode.com/gh_mirrors/su/super-splat 在浏览器里直接做 3D Gaussian Splat 编辑的人,多半会先碰到 SuperSplat。真正卡人的很少是渲染&am… · 2026/11/5 6:31:27

用MCIWnd四十行代码实现Win32 AVI播放器
用MCIWnd四十行代码实现Win32 AVI播放器

简介:这是一份基于 MCIWnd 的 AVI 视频播放器示例工程,面向正在学习 MFC 多媒体编程、需要理解 MCIWnd 控件用法的开发者。工程实现通过“文件→打开”选择 AVI 文件,在客户区左上角创建 MCIWnd 窗口并显示首帧画面,点击控制条播放… · 2026/11/5 7:16:38

AD封装库全流程:原理图库、PCB库与3D库管理避坑
AD封装库全流程:原理图库、PCB库与3D库管理避坑

简介:面向Altium Designer用户的元器件库合集,覆盖原理图绘制到PCB布局布线的常见需求,适合刚入门AD、需要快速补齐基础库的电子工程师与在校学生,也便于有经验的设计者减少重复建库。压缩包共117个文件,约464.27MB&am… · 2026/11/5 7:16:38

MySQL存储过程实战指南:性能优化与安全实践
MySQL存储过程实战指南:性能优化与安全实践

1. MySQL存储过程全面解析作为一名长期与MySQL打交道的数据库工程师,我深刻体会到存储过程在实际项目中的价值。今天我将系统性地分享MySQL存储过程的完整知识体系,包含大量教科书上不会提及的实战经验。存储过程本质上是一组预编译的SQL语句集合&#x… · 2026/11/5 7:16:38

医疗知识图谱构建:技术实现与行业应用
医疗知识图谱构建:技术实现与行业应用

1. 医疗知识图谱的行业价值与挑战医疗行业每天产生海量的临床数据、科研文献和诊疗记录,但信息孤岛现象严重。三甲医院平均每年产生超过50TB的非结构化医疗数据,包括影像报告、电子病历、检验结果等。这些数据之间缺乏有效关联,导致临床决策支… · 2026/11/5 7:16:38

蓝牙Mesh网络中的AppKey绑定机制详解
蓝牙Mesh网络中的AppKey绑定机制详解

1. 蓝牙Mesh网络中的关键绑定机制解析在蓝牙Mesh网络的实际部署中,Provisioning(配网)只是设备入网的第一步。许多开发者常犯的一个错误是认为设备配网后就能立即响应控制指令,但真实情况要复杂得多。让我们通过一个照明控制场景来… · 2026/11/5 7:16:37

OpenClaw 2026版核心能力与京东云部署指南
OpenClaw 2026版核心能力与京东云部署指南

1. OpenClaw(Clawdbot)2026版核心能力解析OpenClaw作为新一代AI助理框架,在2026年3月发布的版本中实现了多项突破性升级。与市面上常见的聊天机器人不同,它真正实现了从"对话交互"到"任务执行"的跨越。我在实… · 2026/11/5 7:15:37

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

多智能体协作系统架构设计与实践优化
多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中… · 2026/11/5 0:00:39

大模型系统性入门实战指南:从原理到部署微调的全链路路线
大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#… · 2026/11/5 0:00:39

鸿蒙文件系统沙箱机制解析与开发实践
鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的… · 2026/11/5 0:00:39

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码