【Linux】gcc编译过程——预编译,编译,汇编,链接

本文详细介绍了Linux系统下GCC编译器将代码编译成可执行文件的过程,包括预编译(处理预编译指令,如#define、#include等)、编译(词法分析、语法分析、语义分析和优化,生成汇编代码)、汇编(将汇编代码转换为机器指令,但无法直接运行)和链接(将目标文件与库文件等链接生成可执行文件)四个阶段。

【Linux】gcc编译过程——预编译,编译,汇编,链接

前言
平时我们在windows系统下的例如VS这样的集成开发环境中编写代码,我们只需要点击编译器的编译便可以生成一个可执行文件(在windows系统下是PE格式,在Linux系统下是ELF格式),而这个编译器又是如何将代码编译成这个文件的呢?因此我们在Linux系统下gcc编译器中展示这个过程。

1.预编译

预编译的命令为

gcc -E hello.c -o hello.i

预编译过程主要处理了 “#”那些源代码中的以"#“开始的预编译指令。比如”#include","#define"等。主要的处理规则如下:
(1)将所有的"#define"删除,并且展开所有的宏定义。
(2)处理所有条件预编译指令,比如"#if","#ifdef","#elif","#else",“endif”
(3)处理"#include"预编译指令,将被包含的文件插入到该预编译指令的位置。
(4)删除所有注释"//“和”/* */"
(5)添加行号和文件名标识。比如#2"hello.c"2。
(6)保留#pragma指令,因为编译器必须使用它们。

2.编译

编译的命令为

gcc -
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值