码迷,mamicode.com
首页 > 系统相关 > 详细

linux GCC编译程序的过程

时间:2015-05-05 09:00:32      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:

使用gcc编译程序时,编译过程可以细分为四个阶段:

  • 预处理
    预处理过程读入程序源代码,检查包含预处理指令的语句和宏定义,并对源代码进行相应的转换。预处理过程会删除程序中的注释和多余的空白字符。
  • 编译
    编译阶段中,gcc首先检查代码的规范性,是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc把代码翻译成汇编语言。
  • 汇编
    汇编阶段是把在编译阶段产生的汇编文件转成目标代码。
  • 链接
    将编译输出的文件链接成最终可执行的二进制文件

如图:
技术分享

示例:

vi hello.c

#include <stdio.h>

int main(){
        printf("hello world");
        return 0;
}
$ ls 
hello.c

$ gcc -E hello.c -o hello.i  #预处理,把预处理的结果输出为hello.i 文件
$ ls 
hello.c  hello.i

$ gcc -S hello.i    #编译,把预处理的结果编译为汇编文件
$ ls 
hello.c  hello.i  hello.s

$ gcc -c hello.s   #汇编,把汇编文件转换成目标文件
$ ls 
hello.c  hello.i  hello.o  hello.s

$ gcc hello.o -o hello  #链接,把目标文件连接成一个名为hello的二进制可执行文件
$ ls 
hello  hello.c  hello.i  hello.o  hello.s

linux GCC编译程序的过程

标签:

原文地址:http://blog.csdn.net/u011641885/article/details/45486119

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!