02从helloworld分析C语言的实现过程

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43200844/article/details/100750071

版权声明:本文为博主 乔小白- 一字一句敲出来的原创作品,未经博主允许不得转载,多谢支持。
本系列博客仅做经验交流分享,不能用作任何商业用途。本文中如有不足之处,请留言,本人将及时更改。

从helloworld分析C语言的编译过程

  • 在正常的编写C语言的过程中我使用的都是IDE,但是今天我将从最原始的东西讲解一下编译器在C语言编译的过程中都做了那些事情。更好的了解C语言的编译过程,感受编程之美。
  • 我当前使用的环境是Linux,在Linux中使用gcc可以更好的了解到C语言的整个实现过程。
  • C语言的编译过程分为以下三步:
    C语言编译过程

使用01中的hello.c 代码

	#include <stdio.h>
		void main(void)
		{
			printf("hello world");
		}
		

第一步:预处理,生成预编译文件(.i文件)

gcc -E hello.c -o hello.i 

预编译就是将包含的头文件全部拉到一个文件中,本程序中的头文件就是#include<stdio.h>

预编译图片

自己写的代码段保留,上面的794行都是在stdio.h中引入的。

第二步:编译,生成汇编代码(.s文件)

gcc –S hello.i –o hello.s

汇编图片

这是一段非常简洁的汇编代码,相对于刚才的799行的预编译文件非常简洁.

第三步:汇编,生成目标文件(.o文件)

gcc -c hello.s -o hello.o

这个文件用记事本是打不开的,所以无法预览。

第四步:链接,生成可执行文件(.out文件)

gcc hello.o -o hello.out

.out文件是在Linux中的可执行文件

分步执行:
整体实现过程

ESc 分别代表将文件转化成预编译文件、汇编文件、目标文件

-o 可以理解为将生成的文件重命名,因为一般情况下,直接生产的文件是a.*

一步执行:
一步到位

整个C语言的编译实现过程就是这么多,当然了现在有很多集成环境的IDE,我们在写代码的时候,无需考虑这么多过程,但是有时在分析代码的时候,可能还是要用到这些东西,在这里我希望你们能过了解整个过程。

猜你喜欢

转载自blog.csdn.net/weixin_43200844/article/details/100750071
今日推荐