qt/C++从源文件到可执行文件的编译过程

QT/C++的编译过程包括预处理、编译、汇编和链接四个阶段。预处理处理条件编译和宏定义,生成.i文件;编译阶段将.i文件转化为机器语言.s,进行语法检查和代码优化;汇编阶段将.s文件转换为.o目标文件;链接阶段将多个.o文件链接成可执行文件。QT的编译通过qmake生成Makefile,然后通过make执行编译和链接。

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

从源文件(.c,.cpp,.h)到可执行文件(.exe,.dll——不是只有exe才叫可执行文件)依次经历下面几个过程

 

预处理阶段

     尽管现在编译器都包含了预处理器,但是通常预处理是独立编译阶段的。也有的称这一阶段为预编译阶段。

 预处理主要对条件编译指令及对宏定义的展开(替换)和对#include的处理等(注意:保留所有的#pragma编译指令,因为编译器需要使用它们),同时也会删除程序中的注释和多余的空白符,经过预处理后生成一个没有宏定义、条件编译指令、没有特殊符号的文件,这个文件与与源文件并无本质区别

编译阶段

   编译阶段是将.i文件生成机器语言.s。这一阶段主要是与语法上的检查和代码优化。语法上的检查有静态和动态。对于静态检查是指不用经过运算即可完成的检查,如类型转换;动态检查是指在运行阶段才能完成的,如除0操作。

优化阶段

    现在的优化主要有两类,一类是与硬件相关,另一类是与硬件无关。与硬件相关的优化是:借助硬件的性能,减少内存访问次数以及硬件执行指令的特点(如流水线、RISC、CISC、VLIW等)而对指令进行一些调整使目标代码比较短,从而提高效率;与硬件无关主要表现在优化循环(削弱强度,代码外提)、删除无用变量等

汇编阶段

   汇编阶段就是将机器语言转换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值