gcc 预处理 编译 汇编 链接

本文详细介绍了C语言程序从源代码到可执行文件的全过程,包括预处理、编译、汇编和链接四个阶段。每个阶段都有详细的解释和说明,如预处理阶段的文本替换、递归展开头文件等;编译阶段的词法分析、语法分析等;汇编阶段的指令翻译;链接阶段的符号重定位等。此外,还提到了不同操作系统的可执行文件格式,如Windows的PE格式和Linux的ELF格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

main.c–>main需要四步:预处理,编译,汇编,连接
1.预编译阶段:gcc -E main.c -o main.i
预编译阶段主要做六件事:
(1)删除#define,并做文本替换;
(2)递归展开头文件;
(3)处理以#开头的预编译指令;
(4)删除注释部分;
(5)添加行号和文件标识;
(6)保留#pragma指令,供给编译器,
预编译阶段的语言还属于高级语言,计算机不能理解.
2.编译阶段:gcc -S main.i -o main.s
编译阶段主要有五件事:
(1)进行词法分析;
(2)语法分析;
(3)语义分析;
(4)代码优化;
(5)生成汇编指令
编译阶段的语言属于低级语言.
3.汇编阶段:gcc -c main.s -o main.o
汇编阶段主要是翻译指令(即将低级语言翻译成机器语言).
4.链接阶段:gcc -o main.o main
链接阶段主要做汇编阶段未做的事情:
(1)强弱符号的处理;
(2)外部符号的处理;
(3)指令段中虚假地址和虚假偏移的处理;
(4)符号的重定位.


<stdio.h>里面放的是申明;
Windows中的可执行文件的格式是PE格式;
Linux中可执行文件的格式是ELF格式.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值