gcc 常用命令(逐渐完善)

首先适用一个简单的示例程序,如下:

//test.c
#include <stdio.h>
int main(void)
{
    printf("Hello gcc!\n");
}

这个程序直接编译使用

gcc test.c -o test

即可,其中-o的意思是生成后面的文件。

而实际上编译过程是分为以下几个子过程的:

  • 预处理(Preprocessing)
  • 编译(Compilation)
  • 汇编(Assembly)
  • 链接(Linking)

我们可以一步一步执行,来观察每一步结果

1、预处理过程(Preprocessing):

gcc -E test.c -o test.i 或 gcc -E test.c 

这步可以输出test.i文件,存放test.c讲过预处理之后的代码。

如果时候后者,则直接在命令窗口显示预处理的结果。

gcc的-E选项可以让编译器在预处理后就停止,并输出结果。

 

2、编译为汇编代码(Compolation)过程:

通过对预处理结果test.i文件进行编译,可以生成汇编代码

gcc -S test.i -o test.s 

gcc 的-S选项表示在程序编译期间,在生成汇编代码后停止,-o输出汇编代码文件

 

3、汇编过程(Assembly):

对于上一届段生成的test.s 文件,gas汇编器负责将其编译为目标文件,如下:

gcc -c test.s -o test.o

在这个生成文件中我们已经没有办法在详细看了,因为它已经是二进制代码

 

4、链接过程(Linking):

gcc 链接器是gas 提供的,负责将程序的目标文件与所需的所有附加的目标文件连接起来,最终形成执行文件,包含静态链接库和动态链接库。

对于上一阶段生成的test.o文件,将其与C标准输入输出库进行链接,最终生成test

gcc test.o -o test

在命令阶段即可运行./test来输出结果了。

 

posted @ 2012-05-03 13:17  紫月冰河  阅读(213)  评论(0编辑  收藏  举报