对象文件是什么样的

时间:2011-08-11 12:02:07

标签: c++ c

据我所知 .c source转到程序集然后转到目标文件,然后目标文件相互链接(和库),我们得到了可以从os运行的应用程序。
但是目标文件是什么样的呢? 它看起来像.asm还是更像.exe?
如何存储目标文件中的指令?正如“mov add call”伪代码或机器无意义的代码?(是问题)

4 个答案:

答案 0 :(得分:2)

目标文件有一些符号信息(通常是专有的,编译器/链接器相关的)和准备好执行的原始编译机器代码。

Linux和许多其他系统中使用的ELF(可执行和可链接格式)如下所示:

enter image description here

答案 1 :(得分:1)

机器代码。您可以使用gcc -S来获取程序集,使用gcc -c来获取目标文件。

答案 2 :(得分:1)

目标文件是编译器所针对的特定处理器的机器代码,以及库中的函数名称等符号信息,以便运行时链接代码可以找到可执行代码的内存位置(在目标文件中)。

Ooh @hexa在登录时提供了更好的答案:)

答案 3 :(得分:1)

在Linux系统上尝试 objdump 命令,以显示有关目标文件的信息,如:

objdump -D <filename.o> | more