linux下编译、链接过程分析

这篇博客详细分析了Linux下编译链接的过程,包括预处理阶段(处理预编译指令、宏定义和条件编译)、编译阶段(生成汇编代码文件)、汇编阶段(转换为机器可执行的目标文件)和链接阶段(解决符号依赖,生成可执行文件)。通过gcc命令,演示了从源代码到可执行文件的整个流程。
摘要由CSDN通过智能技术生成

各个阶段如下图所示:

1 预处理阶段

    1.1 操作系统的自带编译器gcc, gcc -E 它是gcc编译器的一个命令,使用后会有对应的应用程序执行处理

    (1)作用:预编译过程主要处理那些源代码中以#开始的预编译指令,比如删除注释

    (2)将所有的#define删除,并且展开所有的宏定义,比如头文件原地展开

    (3)处理所有条件编译指令,如#if,#ifdef等

    (4)添加行号和文件标识,如#2 “hello.c” 2,以便于编译时编译器产生调试用的行号信息及用于编译时产生编译错误或警告时能够显示行号信息;

 

2 编译阶段

    (1)编译过程就是把预处理完的文件进行一系列词法分析,语法分析,语义分析及优化后生成相应的汇编代码文件(.s)

 

3 汇编阶段

    (1)汇编就是将汇编代码转变成机器可以执行的命令,生成目标文件(.o),汇编器as根据汇编指令和机器指令的对照表一一翻译即可完成。

                汇编的命令为: 

                gcc –c hello.s –o hello.o     或者从源文件直接输出目标文件:gcc –c hello.c –o h

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值