【Linux】C语言翻译过程

本文详细介绍了C语言从源代码到可执行程序的四个步骤:预处理、编译、汇编和链接。通过在Linux环境下使用gcc命令,分别展示了预处理后的头文件展开、宏替换和去注释,编译生成的汇编代码,以及最终经过汇编和链接得到的二进制可执行文件的过程。

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

当我们把一个C语言程序翻译成二进制的时候需要经历预处理、编译、汇编、链接这几个过程。本片文章将用Linux一一展示这几个过程。


1、预处理

预处理的作用:a.宏替换 b.头文件展开 c.去注释 d.条件编译

先写一个简单的C程序

 

[ldx@VM-8-4-centos 2022_08_23]$ gcc -E test.c -o test.i

-E:从现在开始对程序进行翻译,当预处理完成停下

-o:将结果写道test.i

用vim读取test.i,在底行模式输入vs test.c 可以进行分屏,对比着看

ctrl+w+w 切换屏幕

 

 可以发现,test.i中的行数变多了,因为头文件展开了,而主函数中宏替换了,注释也没了

 2、编译

将C语言翻译成汇编语言

[ldx@VM-8-4-centos 2022_08_23]$ gcc -S test.i -o test.s

-S:当编译完成后停止

 

3、 汇编

将汇编语言翻译成二进制文件

[ldx@VM-8-4-centos 2022_08_23]$ gcc -c test.s -o test.o

-c:当汇编完成后停止 

 当我们用vim进入test.o文件时已经看不懂了,因为这是个二进制文件

 需要用二进制文件专用的查看工具

[ldx@VM-8-4-centos 2022_08_23]$ od test.o

 

 4、链接

stdio.h中只有声明,而具体方法的实现是在库文件中,因此需要链接过程,将我们的代码和库里边的代码关联起来。

[ldx@VM-8-4-centos 2022_08_23]$ gcc test.o -o mytest

链接之后就生成了可执行程序

查看文件属性的时候,也可以看到mytest文件是可执行的

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值