gcc编译器

发布时间 2023-08-19 17:30:45作者: 吾本疏狂

gcc编译器

1.hello.c - 给谁看
计算机 - 只能看懂二进制内容 例如:010010101010110101
人 - 看明白
结果 :
人可以看明白 ,机器看不明白

​ 将当前缩写的代码经过翻译得到计算机可以看懂的代码, 翻译的过程 叫做编译 ,编译中需要用到的工具叫做编译器 而 gcc 就是 编译器 ,编译器还有其他种类例如:vc,terbo c,keil5 ......

编写过程:

gcc hello.c 

得到a.out (a - application - 应用,out - output - 输出 )
a.out - 编译程序所得到的输出的应用程序 - 可执行程序 - 二进制程序 - 计算机可以看明白
hello.c -> gcc -> a.out

弊端 :
a.out - 用来干嘛的

gcc xx.c -> a.out (默认得到a.out - 目的性及其不明确 )

gcc hello.c -> a.out
gcc world.c -> a.out

两者最终都会得到文件a.out ,后面的a.out将前面的a.out覆盖

2.程序编译的过程 :
gcc编译程序的步骤 : 四步骤 / 三步骤

  1. 预处理
    将源文件中包含的头文件拷贝到当前的.c文件中

    #include <stdio.h>  gcc
    

    编译器第一步就会将stdio.h头文件内容拷贝过来

    gcc -E hello.c -o hello.i 
    
    只进行预处理的步骤, 得到.i文件, 打开
    
  2. 编译
    将预处理得到的.i文件进行编译得到汇编文件
    汇编文件 : .s / .S - 汇编代码

    gcc -S hello.i -o hello.s
    

    ​ .s - 计算机 - 不明白

  3. 汇编
    将编译后得到的.s文件经过汇编得到计算机可以识别的机器文件 - 二进制
    该文件叫做目标文件
    目标文件 : .o - object (以点o作为后缀)

    gcc -c hello.s -o hello.o 
    

    ​ .o - 二进制内容 - 计算机 - 明白

4.链接
就是将大神的各种代码, 例如: printf函数的实现代码 和 字节的代码整合起来 - 形成了二进制可执行程序
该过程称为链接
|xxxxxxxxxxxxxxxxx|.o + |yyyyyyyyyyyyyyyy|.o = 二进制可执行程序
字节写的代码 各种大神代码

gcc hello.o -o hello 

​ 此时可执行程序名字为hello

gcc选项:
-E : 预处理, 只会预处理
-o : 指定输出的文件名
-S : 只进行编译步骤
-c : 只进行汇编步骤

运行程序 :
./hello

综上所述,其实有更简单的一步

gcc xx.c -o xx 
gcc hello.c -o hello - 一步到位 - 标准 

3.printf函数
将程序中的数据显示到终端窗口中 - 包含stdio.h

可以在双引号里使用占位符, 将数据转移到双引号后面
%d - 整数类型占位符
可以在一条语句中使用多个占位符, 需要在双引号后面使用多个数字.
数字个数和占位符个数, 保持一致

占位符表示的数据可以是未知的 - 变量