GCC编译C程序的步骤

GCC编译器其实也是 Linux GCC命令,它以命令的形式在终端(Shell)中使用,有很多选项。

GCC 是一个交叉平台的编译器,目前支持几乎所有主流 CPU 处理器平台(例如 i386、ix86_64、SPARCE、ARM、MIPS 等),它可以完成从 C、C++、Objective-C 等源文件向运行在特定 CPU 硬件上的目标代码的转换。

GCC 不仅功能非常强大,结构也异常灵活,便携性(portable)与跨平台支持(cross-platform support)特性是GCC的显著优点。

GCC 具有丰富的配套工具链支持。GCC 不是一个孤立的编译器,而是整个 GNU 工程中的一个组成部分。GNU 工程中的其他软件,包括 GNU C 库 glibc、GNU 的调试工具 gdb,以及 GNU 二进制工具链 binutils(GNU Binutils Toolchains,例如汇编工具 as,连接工具 ld,目标文件分析工具 objdump、objcopy 等)等都与 GCC 关系密切,互相依赖。

接下来以一个具体的例子来阐述GCC是如何对C程序进行编译的:

如上所述,在终端中GCC是以命令的形式使用的,

(1)-E:这个命令是对程序进行预处理,这个过程包括(宏替换、头文件展开、条件编译、去注释),将我们所编写的C程序变成一个符合要求的C程序

所编写的C程序:

#include <stdio.h>
#include <unistd.h>
#define MAX 18
int main()
{//定义两个变量,并求和
    int a = 10;
    int b = 20;
    int c = a + b;
    printf("%d\n",c);
    //输出MAX的值
    printf("%d\n",MAX);
    return 0;
}

对程序进行预处理:

如图生成test.i 文件,查看预处理之后的程序(去掉了注释,进行了宏替换)

(2)-S:对程序进行编译,将C程序转化成汇编语言

如图生成了一个test.s文件,对该文件进行查看:

(3)-c:汇编过程,将汇编语言转化成二进制文件(此时的二进制文件不能执行)

如图汇编之后生成一个test.o文件(可执行文件),对此文件进行查看:

使用 od test.o 可看到0 1序列:

(4)-o:这个命令可以写也可以不写,此处省略,对程序进行连接,生成可执行文件;

如图生成a.out可执行文件;

运行程序:

综上:

GCC编译程序的步骤:
预处理(宏替换、头文件展开、条件编译、去注释)将C程序标准化;-E

编译:将C语言转化成汇编语言;-S

汇编:将汇编语言转化成二进制文件(此时的二进制文件不能执行);-c

链接:生成可执行的二进制文件;-o

其他命令即详述:

http://www.runoob.com/w3cnote/gcc-parameter-detail.html

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值