c语言是以文件为单位编译,c语言从头开始(三:编译器工作原理) (我们还可以自己编写头文件后缀是xx.h并把它当前代码文件所在目录我们要用就可以直接通过下面代码使用)...

c语言从头开始(三:编译器工作原理)

【【枫歌枫歌】c语言从头开始(三:编译器工作原理)】https://toutiao.com/group/6568056688174170628/?iid=15906422033&app=explore_article&timestamp=1533653428&group_id=6568056688174170628&tt_from=copy_link&utm_source=copy_link&utm_medium=toutiao_ios&utm_campaign=client_share

(我们还可以自己编写头文件后缀是xx.h并把它当前代码文件所在目录我们要用就可以直接通过下面代码使用)

------------------

以gcc编译器为例子,编译实际上总共经历了四个阶段

预处理--->编译--->汇编--->链接

1.预处理

预处理就是对源代码进行文本处理,对开头**除空白外第一个字符为#的代码行**进行处理。

例如:

```

#include

```

前面说过这个是标准输入输出头文件,读到这行代码时,从编译器的内置查找路径的根部开始查找stdio.h文件,读取其内容,并把它直接插入到程序文本前面。

stdio.h是编译器内原本就有的头文件,像类似的还有很多,比如math.h和string.h等等。当然,我们还可以自己编写头文件,头文件的后缀是xx.h,并把它当前代码文件所在目录。我们要用就可以直接通过下面代码使用

```

#include 'xx.h'

```

还有宏定义

```

#define XX YY //把XX定义为YY,也就是下面代码所以出现的XX就相当于YY

```

在cmd命令行中输入

```

gcc -E xx.c -O xx.i

```

打开就可以看到我们的源代码前面多了很多东西

140633703_1_20180807105119435

2.编译

将文本文件hello.i翻译成文本文件hello.s。我们在cmd命令行中输入

```

gcc -S xx.i -o xx.s

```

140633703_2_20180807105119513

没错,可以看到代码被编译成了汇编语言。

3.汇编

代码已经被编译成为汇编语言,那么下一步应该干什么?

没错,在把它更进一步,变成机器语言,也就是01组成的二进制文件,继续打开cmd

```

gcc -C xx.s -o xx.o

```

但是,它是二进制格式,无法直接查看,可以用反汇编器来查看它的编码:objdump –d xx.o

140633703_3_20180807105119623

4.链接

最后一步就是链接了

```

gcc xx.o -o xx.exe

```

我们看到了我们熟悉的.exe文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值