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

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

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

两个文件:test.cpp test.h
我们命令行编译的指令是:g++ test.cpp -o test
但是这中间实际上经过了以下过程:
c/c++编译的四个过程(预编译, 编译,汇编,可执行程序)

四步走:

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一条指令就可以实现上述操作

多个文件一起编译

上图:
c/c++编译的四个过程(预编译, 编译,汇编,可执行程序)

原文链接: https://www.cnblogs.com/chaohacker/p/12860219.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

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

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/347379

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(1)
上一篇 2023年3月2日 上午4:29
下一篇 2023年3月2日 上午4:29

相关推荐