linux下C程序的编译链接

linux下C程序的编译可以分为四个步骤,分别是预处理,编译,汇编和链接。

1.预编译:

首先预处理完成预替换、去注释、头文件按照路径展开、以及条件编译。

建立一个test.c文件。里面写入注释、宏定义、头文件、条件编译。

如下图:


使用的gcc命令是:gcc -E test.c -o test.i 

gcc -E的作用是将.c文件转化成.i文件


使用vi命令打开test.i


此时我们发现宏定义已被替换,处理所有条件预编译指令,处理“#include”预编译指令,注释也已经被删除。

2.编译:

把预处理完的文件进行一系列词法分析,语法分析,语义分析及生成相应的汇编代码。

使用的gcc命令是:gcc –S tets.i -o test.s 

gcc -S的作用是将.i文件转化成.s文件




打开test.s文件


此时我们发现,编译已经把C语言转化为汇编语言了。

3.汇编

将汇编代码转变成机器可执行的指令。

使用的gcc命令是:gcc –c test.s -o test.o

gcc -S的作用是将.s文件转化成.o文件


打开test.o文件




通过上图,我们可以发现汇编实际上指把汇编语言代码翻译成目标机器指令的过程。

目标文件中所存放的也就是与源程序等效的目标的机器语言代码。
汇编程序生成的目标文件实际上是可重定位文件,它其中包含有适合于其它目标文件链接来创建一个可执行的或者共享的目标文件的代码和数据。

4.链接

生成exe可执行程序。

使用的gcc命令是:gcc test.o -o test

这样可以得到计算机能读懂的二进制文件


打开test文件




  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值