linux下的C语言gcc编译过程

在了解代码的编译过程前我们先了解一下IDE

1,集成开发环境(IDE)

由于我们编写的C代码要经过预处理、编译、汇编和链接才能成为机器可以运行的可执行程序,而使用IDE可以略过这些步骤,因为IDE的运行按钮已经帮你实现这一切了。比如VS(visual studio)、eclipse、gcc,功能强大,值得一提的是VS是付费的,eclipse开源免费,所以使用eclipse开发还不需要切换操作系统。

所以,现在你知道自己敲的代码要变为可执行文件并不是那么简单了,只是你电脑上的集成开发环境功能太过强大,结下来我们一起来了解整个过程。

2,我们以这里以Linux下的gcc过程为例

gcc  test.c-  -o test

从.c文件到可执行的.out文件,经过了预处理,编译,汇编,连接四个过程:

预处理:

gcc -E test.c -o test.i      //-E预处理后退出;-o指定文件名

预处理就是将头文件(#include)与宏(#define)加入到.c中去。

编译:

gcc -S test.i -o test.s   //同上,-S表示执行编译后就停止

编译过程会生成汇编文件.S,用过keil的小伙伴应该接触过汇编语言,这里给大家截取一段.S文件

可以看出来,汇编指令直接对CPU的寄存器进行操作。

汇编:

gcc -c test.s -o test.o  //同上,-C表示执行到汇编退出

 经过汇编过程后,.s文件就变成了机器能识别的二进制文件,也就是目标文件(.o).

连接:

gcc test.o -o test.out //test等同于test.out,是可执行文件

连接过程就是在目标文件的基础上,加入库文件和启动文件等生成的可执行文件。

我相信到这里大家应该对代码的编译过程有很清楚的认知了,尽管现在集成编译环境功能强大,我们也应该掌握最底层的原理。 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值