编程语言
首页 > 编程语言> > 程序被翻译成其它不同的格式

程序被翻译成其它不同的格式

作者:互联网

程序被翻译成其它不同的格式

main.c为例,程序文本如下

# include "stdio.h"

int main()
{
    printf("Hello World!\n");

    return 0;
}

在linux系统上,从源文件到目标文件的转化是由编译器驱动程序完成的:

gcc -o main.c main

gcc编译器驱动程序读取源程序文件main.c,并且将它翻译成一个可执行目标文件main。这个过程分为4个阶段,执行这四个阶段的程序(预处理器、编译器、汇编器和链接器)构成了编译系统。

  1. 预处理阶段:预处理器(cpp)根据以字符#开头的命令修改原始的C程序,即读取头文件的内容,将它直接插入到程序文本中,得到另一个C程序main.i
gcc -E main.c -o main.i
  1. 编译阶段:编译器(ccl)将文本文件main.i翻译称文本文件main.s,它包含一个汇编语言程序
gcc -S main.i -o main.s
  1. 汇编阶段:汇编器(as)将main.s翻译成机器语言指令,打包成可重定位目标程序的格式,保存在main.o中。
gcc -c main.s -o main.o

不用试图cat -n main.o,否则你将会看到一对乱码,因为这个文件是机器语言指令而不是字符

  1. 链接阶段:程序中调用了printr()函数,它存在与printf.o的预编译目标文件中,链接器(ld)将其并入到main.o中,得到可执行目标文件main
gcc main.o -o main    

标签:文件,gcc,其它,程序,编译器,翻译成,格式,main
来源: https://www.cnblogs.com/Euler-0525/p/16453481.html