gcc c语言编译流程

52 篇文章 15 订阅
50 篇文章 29 订阅
本文介绍了C语言从源代码到可执行程序的编译过程,包括预处理、编译、汇编和链接四个步骤。通过GCC工具链在Linux环境下的示例,详细解析了每个阶段的具体操作和作用,如宏替换、汇编代码生成和动态/静态链接的差异。此外,还探讨了ELF文件的段结构和反汇编方法。
摘要由CSDN通过智能技术生成

 

1前言

 

最近群里讨论个C语言的小程序,看起来都不是很难,但是大家对答案有争论,所以想讨论编译原理,做嵌入式要对编译原理有一定的了解,所以转了这篇文章。

我们之前讨论的问题如下代码

#include 
#include 

#define WEIQIFA 0;

int main(void) 
{        
    int i = WEIQIFA;        
    i = i++;
    i++;        
    printf("%d\n",i);
    return 0;
}

 

原来是没有那个宏WEIQIFA的,但是我为了举例编译原理,特意加上去,编译的第一步就是做宏替换

预编译后变成下面这样

 

int main(void)
{

    int i = 0;;
    i = i++;
    i++;
    printf("%d\n",i);
    return 0;
}

用g++ -g -Wstrict-prototypes -Wall -Wunused -o test test001.c 编译

然后用objdump -j .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值