gcc编译过程

一、总体概述

GCC的编译流程分为四个步骤:
1、预处理(Pre-Processing)
2、编译(Compiling)
3、汇编 (Assembliang)
4、链接(Linking)

二、解释步骤

XXX为源文件
YY为生成的文件
1、预处理(Pre-Processing)
预处理用于将所有的#include头文件以及宏定义替换成其真正的内容,预处理之后得到的仍然是文本文件,但文件体积会大很多。
将 .c 文件转换为 .i 文件,使用gcc命令:gcc -E XXX -o YY
对应于预处理命令 cpp
2、编译(Compiling)
将预处理之后的程序转换为特定的汇编代码 (assembly code) 的过程。
将 .c/.h 文件转换为 .s 文件,使用gcc命令:gcc -S XXX -o YY
对应于编译命令 cc -S
3、汇编 (Assembliang)
汇编过程将上一步的汇编代码转成机器码(machine code),这一步产生的文件叫 目标文件 ,是二进制格式。此步骤会为每一个源文件产生一个目标文件。
将 .s 文件转换为 .o 文件,使用gcc命令:gcc -c XXX -o YY
对应于汇编命令 as
4、链接(Linking)
链接过程将多个目标文件以及所需的库文件( .so 等)链接成最终可执行文件(executable file)。
将 .o 文件转换为 可执行程序,使用gcc命令: gcc -o YY XXX
对应于链接命令 ld
总结起来编译过程就上面的四个过程:预编译处理(.c) --> 编译、优化程序(.s、.asm)--> 汇编程序(.obj、.o、.a、.ko) --> 链接程序(.exe、.elf、.axf等)。

三、案例

结果展示
编译过程

四、个人练习

目录结构

├── test.c
└── inc
    ├── mymath.h
    └── mymath.c

demo源文件

// test.c
#include <stdio.h>
  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值