[C.C++] C语言的处理阶段 以main.c为例

529 0
Honkers 2025-3-6 21:37:58 | 显示全部楼层 |阅读模式

第一步:预处理阶段gcc -E main.c -o main.i(只进行预编译,不做其他处理)

预处理阶段

去掉注释,加载头文件,代替宏定义,条件编译

条件编译需要文件; .c文件生成产物;预处理文件(以.i结尾)

第二部:编译阶段:gcc -S main.i -o main.s(只编译不汇编,生成汇编代码)

编译阶段的主要工作是把我们的源代码生成相应的汇编代码的过程。这个阶段花费的时间会比较长。它需要对我们的C语言进行语法和语义的分析。如果有语法错误,报错,并结束编译过程。如果没有语法错误,还需要优化我们的代码,把C的源程序转变为汇编代码。需要文件:.i文件 生成产物:汇编文件(以.s结尾)

第三步:汇编阶段:gcc -c main.s -o main.o(只编译不链接,生成目标文件“.o”)

首先我们应该知道汇编代码(汇编指令)并不是机器能够执行的语言。我们还必须把汇编语言翻译

成计算机能识别的机器语言,这个翻译的过程是在汇编阶段完成的。所以在这个阶段把汇编源文件通过

汇编器生成目标文件(二进制机器语言)。

第四步:链接阶段:gcc main.o -o main

把目标文件执行所依赖的所有二进制的其他目标文件及C的库文件都整合成一个可执行文件的过程需要文件:.o文件及各种动态库或静态库

生成产物:可执行程序

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Honkers

荣誉红客

关注
  • 4008
    主题
  • 36
    粉丝
  • 0
    关注
这家伙很懒,什么都没留下!

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行