【i.MX283A学习】gcc编译C语言过程

参考教程《嵌入式Linux开发教程(上册)》

一个简单的HelloWorld的C程序用GCC编译,只需要

gcc hello.c -o hello

便可以得到一个执行文件hello.省略掉上面语句的后部分,直接

gcc hello.c

则生成一个文件名默认为a.out的可执行文件。我们看起来似乎很简单的一行命令,其实内部经历了一系列的处理,处理过程如下图所示:

这里写图片描述

这一系列过程就是预处理,编译,汇编,链接

那么这一系列过程做了写什么呢?我们可以通过把gcc hello.c这一过程展开写细点,就能看出来。

预处理

C语言的预处理文件后缀为.i,需要加上预处理命令-E

gcc -E hello.c -o hello.i

查看.i文件,会发现有很多行,比如把头文件具体到了指定的位置,预处理的作用是对各种预处理命令进行处理,包括头文件包含,宏定义的扩展,条件编译的选择等。

编译

编译需要加上参数-S

gcc -S hello.i

生成hello.s文件,查看会发现里面全变成了汇编语言,编译的作用就是将得到的预处理文件“翻译转换”成汇编语言文件。

汇编

得到上述的汇编语言文件后,就可以加上参数-c编译得到机器码文件.o文件。

gcc -c hello.s

链接

对机器码文件进行最后一步连接后,程序才能最终可以运行。

gcc hello.o

上面的后缀名都是有讲究的,gcc中常用C/C++文件名后缀如下图:

这里写图片描述

其中也用到了一些gcc编译参数,gcc常见编译参数如下图所示:

这里写图片描述
这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值