gcc 工作流程中的4个阶段(预处理、编译和优化、汇编和链接)

        GCC 编译器对程序的编译下图所示,分为 4 个阶段:预处理(预编译)、编译和优化、汇编和链接。GCC 的编译器可以将这 4 个步骤合并成一个。

预处理:在这个阶段主要做了三件事: 展开头文件 、宏替换 、去掉注释行

        *这个阶段需要 GCC 调用预处理器来完成,最终得到的还是源文件,文本格式
编译:这个阶段需要 GCC 调用编译器对文件进行编译,最终得到一个汇编文件

汇编:这个阶段需要 GCC 调用汇编器对文件进行汇编,最终得到一个二进制文件

链接:这个阶段需要 GCC 调用链接器对程序需要调用的库进行链接,最终得到一个可执行的二进制文件

后缀说明参数
.c源文件-
.i预处理后的 C 文件-E
.s编译之后得到的汇编语言的源文件-S
.o汇编后得到的二进制文件-c

第一步:对源文件进行预处理,需要使用的 gcc 参数为 -E

# 1. 预处理, -o 指定生成的文件名
$ gcc -E main.c -o main.i

第二步:编译预处理之后的文件,需要使用的 gcc 参数为 -S

# 2. 编译, 得到汇编文件
$ gcc -S main.i -o main.s

第三步:对得到的汇编文件进行汇编,需要使用的 gcc 参数为 -c

# 4. 链接
$ gcc main.o -o main

第四步:将得到的二进制文件和标准库进制链接,得到可执行的二进制文件,不需要任何参数

# 4. 链接
$ gcc main.o -o main

上面4个步骤可以合为一个

# 该命令是直接进行链接生成可执行程序, 链接之前的三步会自动执行
$ gcc main.c -o main

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值