编译过程

原创 2015年07月06日 18:41:37

下面以hello.c源文件到hello可执行目标文件的编译过程来讲解在实际的计算机系统中怎样把一个编程语言转变成机器语言的。

gcc -o hello helo.c

预处理阶段

预处理器cpp
功能:主要是根据#字符命令,把引入的.h头文件直接复制到程序中,生成新的C程序。
输出:hello.c->hello.i(被修改的源程序,文本可读)。

编译阶段

编译器cc1
功能:将上面的.i源程序翻译成.s汇编语言程序,其中的每条语句都是标准的格式来描述低级机器语言指令。汇编语言为不同高级语言的不同编译器提供通用的输出语言,也就是对于同一类型的机器(intel、arm可能不同)上的不同语言的汇编指令是相同的(一样的汇编语言)。
输出:hello.i->hello.s(汇编语言程序,文本可读)。

汇编阶段

汇编器as
功能:将上面的.s文件翻译成机器语言指令,把这些指令打包成一种可重定位目标程序的格式,同时将结果保存在目标文件.o中。
输出:hello.s->hello.o(可重定位目标程序,二进制不可读)。

链接阶段

链接器ld*
功能:负责把使用到的所有的.o文件合并在一起(尤其是标准库的一些.o文件),生成可执行目标文件,这个文件可以被加载到内存里面,有系统执行。
输出:hello.o->hello(可执行目标文件,二进制不可读)。

示例

这样整个程序的声明周期就完成了。
代码如下:
code
下面是上面代码的编译过程:
process

Android 源码编译过程

  • 2014年05月13日 09:55
  • 204KB
  • 下载

Uboot2014.04移植到S3C2440(一)--编译过程

Uboot2014.04移植到S3C2440的编译过程

Qtopia的编译过程

  • 2010年02月25日 01:19
  • 770KB
  • 下载

Linux ffmpeg的安装编译过程

1、下载ffmpeg。       在网上搜索一下,或者到官方网站下载     2、解压      tar命令解压   3、配置   ./configure --en...
  • ljzcom
  • ljzcom
  • 2012年03月28日 17:12
  • 376

qt5+qgis2.14编译过程工具及库x86

  • 2017年06月28日 01:02
  • 41.7MB
  • 下载

Qt4.6.3编译过程

  • 2013年06月10日 20:59
  • 609KB
  • 下载

MuPDF for Android编译过程小结

最近使用mupdf在自己的app上用来打开pdf类型的文件,把自己编译的过程在这里做个小小的记录 源码下载 首先需要把mupdf的源码下载下来为后续编译出so文件做准备,这里推荐官方的下载地址MuPd...

内核编译过程

  • 2015年10月08日 20:04
  • 11KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:编译过程
举报原因:
原因补充:

(最多只允许输入30个字)