在编译状态之后,对象代码究竟是什么?

时间:2015-08-31 04:46:11

标签: assembly compiler-construction operating-system

我知道目标代码是编译阶段之后的代码,它存在于目标文件中(例如:aaa.obj)。这是什么文件?包含机器说明?如果是这样,我为什么不能在该文件中看到任何0和1。 请帮帮我。

1 个答案:

答案 0 :(得分:4)

What's an object file in C?

  

目标文件是编译阶段的实际输出。它' S   主要是机器代码,但有信息允许链接器看到什么   符号在其中以及为了工作所需的符号。   (供参考,"符号"基本上是全局对象的名称,   功能等。)

     

链接器获取所有这些目标文件并将它们组合成一个   可执行的(假设它可以,即:没有任何重复   或未定义的符号)。很多编译器都会为你做这个(阅读:   如果你不告诉他们,他们会自己运行链接器   编译"使用命令行选项。 (-c是常见的"只是编译;   没有链接"选项)。

  

如果是这样,我为什么不能在该文件中看到任何0和1。

您将目标文件概念与可执行文件概念混淆。问题是目标文件包含链接器的编译代码和指令(程序从一个或多个目标文件构建一个可执行文件)。链接器程序的输出实际上是可执行文件,其中包含由零和1组成的预期文件。

相关问题