GCC编译器介绍及编译流程说明

一、计算机基础

1、冯诺依曼模型

1945年冯诺依曼和一些科学家提出了一份报告,报告遵循了图灵机的设计,并提出用电子元件构造计算机,约定了用二进制进行计算和存储,并且将计算机结构分成运算器,控制器、存储器、输入设备、输出设备等5个部分。这几个部分组成了计算机的硬件

在这里插入图片描述

主存储器 :我们也叫内存,程序中待处理的数据和处理的结果都存储在内存中
外存储器 : 常用就是硬盘,是用来长期保存数据的大容量存储器
寄存器 : CPU内部的高速存储器,速度快,数目少

2、程序语言发展历史

在这里插入图片描述

机器语言 : 即二进制,直接使用机器指令(0,1序列)来设计程序,可以被计算机系统直接识别。和自然语言完全不同,难于记忆和理解,工作量大,效率低,无法移植
在这里插入图片描述
汇编语言 : 把机器指令符号化,即通过一组简单的的符号来表示机器指令,更接近于自然语言,更容易理解和使用。 和机器语言一样,开发工作量大,无法移植
在这里插入图片描述
高级语言 :与特定的计算机系统无关,更接近于人类自然语言。一条语句对应多条机器指令,工作量小,开发效率高。 常用的解析性语言有python,shell,Ruby。常用的编译型语言有C,C++,JAVA等。

  • 编译性语言:将高级语言源代码一次性的编译成可被该平台硬件执行的机器码,并包装成该平台所能识别的可执行性程序的格式。所以执行效率高,但是与特定平台有关,需要想办法移植。

  • 解释性语言:不同的平台只要提供相应的解释器,就可以运行源代码,解释器是对源程序逐行解释成特定平台的机器码并立即执行。是代码在执行时才被解释器一行行动态翻译和执行,而不是在执行之前就完成翻译。所以效率相对较低,但是书写相对接单方便源程序移植。

二、GCC编译器介绍

GCC它是由GNU开发的编程语言编译器。它是GNUCompiler
Collection的缩写。可以用来编译C,C++,Object-C等多种语言。

它是Linux下提供一般用户使用的标准编译器。

1、gcc编译器的使用

  • 安装指令
	sudo apt-get install gcc
  • 使用系统生成的可执行文件

gcc hello.c编译代码,系统默认会在当前目录下,生成一个叫做a.out的文件

./a.out执行a.out文件,输出对应的结果.

在这里插入图片描述

  • 用户自定义可执行文件

gcc hello.c -o exec编译代码,用户自定义生成的可执行文件名字

./exec执行./exec文件,输出对应的结果.

在这里插入图片描述

2、gcc编译器的流程

在这里插入图片描述

• -E 使编译器在预处理结束的时候停止
• -S 使编译器在编译结束的时候停止
• -c 使编译器在汇编结束的时候停止
• -o 输出gcc编译的结果

  • 预处理---->生成我预处理过得C代码 xx.i
	gcc -E xx.c -o xx.i

在这里插入图片描述

在这里插入图片描述

  • 编译---->把我们预处理过的代码生成我们的汇编代码 xx.s
	gcc -S xx.i -o xx.s

在这里插入图片描述

在这里插入图片描述

  • 汇编---->把汇编代码生成我们的目标文件 xx.o
	gcc -c xx.s -o xx.o

在这里插入图片描述

  • 链接---->把我们的目标文件生成我们的可执行文件
	gcc xx.o -o xx

在这里插入图片描述

  • 24
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值