学而不思则罔,思而不学则殆
引言
cpp文件是怎么编程exe的可执行文件的呢?一般我们可能没有关心,编译器直接帮我们解决了,但是我觉得作为一名从业者,想要了解更多,还是需要了解更多的。
编译总结
整个C++(C)的编译过程如图:
源代码会经过预处理,编译,汇编和链接四步.
每一步的命令如下。以main.cpp为例
# 编译流程
## 1 生成预处理文件
g++ -o main.ii -E main.cpp
## 2编译- 生成汇编文件
g++ -o main.s -S main.cpp
g++ -o main.s -S main.ii
## 3生成目标文件-二进制码
g++ -o main.o -c main.cpp
g++ -o main.o -c main.s
## 4生成exe文件
g++ -o main.exe main.cpp
g++ -o main.exe main.o
## 5执行
mian
编译过程测试
源代码文件很少,就打印Hello World
第一步,预处理
生成预处理文件。
## 1 生成预处理文件
g++ -o main.ii -E main.cpp
开打main.ii文件,首先你会发现这个文件很长,感兴趣的可以仔细看看,滑到最后才是我们自己写的hello World源代码。
第二步,编译
## 2编译- 生成汇编文件
g++ -o main.s -S main.cpp
g++ -o main.s -S main.ii
这个.s文件就很小了,打开看看,发现里面都是汇编语言。
第三步,汇编
## 3生成目标文件-二进制码
g++ -o main.o -c main.cpp
g++ -o main.o -c main.s
这个文件打开我们就不能看了,因为已经是机器码了。
第四步,链接
## 4生成exe文件
g++ -o main.exe main.cpp
g++ -o main.exe main.o
生产了exe的可执行文件。
第五步,执行
总结
整体流程如上,一般编译器帮我们解决了中间过程。但是作为了解我们也需要知道中间过程,便于我们学习和研究。比如学习汇编语言。
以上,与君共勉。