一、计算机基础
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