C语言编译全过程(有图有真相)

112521_UvDL_2430084.png

从上图可以看到:
预编译
将.c 文件转化成 .i文件
使用的gcc命令是:gcc –E
对应于预处理命令cpp
编译
将.c/.h文件转换成.s文件
使用的gcc命令是:gcc –S
对应于编译命令   cc –S
汇编
将.s 文件转化成 .o文件
使用的gcc 命令是:gcc –c
对应于汇编命令是  as
链接
将.o文件转化成可执行程序
使用的gcc 命令是: gcc
对应于链接命令是  ld

总结起来编译过程就上面的四个过程:预编译处理(.c) --> 编译、优化程序(.s、.asm)--> 汇编程序(.obj、.o、.a、.ko) --> 链接程序(.exe、.elf、.axf等)

注:以上全部参考C语言编译全过程介绍,下面给出自己的实验,至于对理论没清楚的多搜搜资料



 

    编译之前,创建一个名字为testCompile.c的源文件程序,并保存

$ vi testCompile.c

110647_UEcD_2430084.png

     预编译

$ clang -E testCompile.c -o testCompile.i

111121_5DrJ_2430084.png

    编译

$ clang -S testCompile.i -o testCompile.s


111346_ldgw_2430084.png

    汇编

$ clang -c testCompile.s -o testCompile.o


111710_dNFr_2430084.png


    链接

$ clang testCompile.o -o out

111900_1NZF_2430084.png


转载于:https://my.oschina.net/mather/blog/599332

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值