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

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

从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,我们在写代码的时候,无需考虑这么多过程,但是有时在分析代码的时候,可能还是要用到这些东西,在这里我希望你们能过了解整个过程。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值