当我们编译一个hello.c文件时,编译器干了那些事。一般是分为四个阶段。
![](https://img.haomeiwen.com/i416751/6932471e2cee6e00.png)
![](https://img.haomeiwen.com/i416751/92602a1c0b8c2120.png)
![](https://img.haomeiwen.com/i416751/3c26b2604c12b909.png)
1.预处理
gcc -E hello.c -o hello.i
![](https://img.haomeiwen.com/i416751/dba4cead503bd936.png)
![](https://img.haomeiwen.com/i416751/ec9214a99231f3cb.png)
gcc编译器把hello.c这个文件所包含sum.h的库都link过来了,并且插入在main的前面,这就是编译器预处理所干的事。
2.编译
gcc -S hello.i -o hello.s
![](https://img.haomeiwen.com/i416751/c511be7fe78c7692.png)
![](https://img.haomeiwen.com/i416751/ad45b9dfdf7e1177.png)
3.汇编
gcc -c hello.s -o hello.o
![](https://img.haomeiwen.com/i416751/47f2e5225f14e585.png)
![](https://img.haomeiwen.com/i416751/255720cb04526ebd.png)
4.链接
gcc hello.o -o hello
![](https://img.haomeiwen.com/i416751/bffd5f858a6b94d5.png)
![](https://img.haomeiwen.com/i416751/ca9ea2d9694f567c.png)
一般我们用gcc编译一个.c文件时,都会生成一个.out文件也可以自己重命名hello
![](https://img.haomeiwen.com/i416751/798d065fd903b302.png)
![](https://img.haomeiwen.com/i416751/812a1e796e0f8f67.png)
网友评论