当我们编译C ++时,我们得到了什么?二进制代码 ?汇编代码?

时间:2015-03-19 10:26:04

标签: c++ compilation

在Java中,当我们编译文件时,我们得到字节码,然后用虚拟机执行。

在C ++中怎么样?当我们用g ++编译文件时会发生什么,我们得到汇编代码或二进制代码?

1 个答案:

答案 0 :(得分:2)

C和C ++被编译成目标文件。这些文件包含可直接在目标处理器上执行的机器代码。但是,在完全可执行之前,我们需要将所有目标文件链接在一起。除了填写缺失符号的所有地址之外,这不会更改代码。代码的格式保持不变。

在linux上,目标文件采用ELF格式。

然而,可以使用链接时优化来编译文件。除了机器代码之外,这通常还会产生字节码。当链接时间优化链接时,链接器将在执行交叉编译单元(目标文件)优化时将字节代码转换为机器代码。