首页 > 其他 > 详细

编译的四个过程(预编译, 编译,汇编,可执行程序)

时间:2020-05-09 22:20:58      阅读:53      评论:0      收藏:0      [点我收藏+]

引用参考狄泰软件唐老师课程,有兴趣淘宝店铺搜索狄泰软件

以下说明使用g++编译器

两个文件:test.cpp test.h
我们命令行编译的指令是:g++ test.cpp -o test
但是这中间实际上经过了以下过程:
技术分享图片

四步走:
1.预处理
命令:g++ -E test.cpp -o test.i
这部分操作:1.将宏定义展开,删除#define
2.将注释删除,用空格代替
3.处理条件编译 #ifdef #endif
4.处理头文件#include,将包含的头文件展开
5.处理#pragma指令
我们动手试一下在程序中包含上面这些,然后打开test.i,会发现它们都消失不见了,都按照上面的规则展开了
2.编译
g++ -S test.i -o test.s
生成的是汇编文件
这部分操作:1.编译器检查语法,语义分析
2.分析关键字,类型是否合法
3.分析表达式是否合法
3.汇编
指令:g++ -c test.s -o test.o
这部分操作:1.将汇编代码翻译为机器可执行的二进制文件

4.生成可执行程序
指令:g++ test.o -o test
这部分操作:1.将机器指令代码生成可以执行的文件

连起来就是1->2->3->4

g++帮助我们优化了,所以只需要g++ test.cpp -o test一条指令就可以实现上述操作

编译的四个过程(预编译, 编译,汇编,可执行程序)

原文:https://www.cnblogs.com/zero-waring/p/12860219.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!