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



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

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

C和C++被编译成一个对象文件。这些文件包含可以直接在目标处理器上执行的机器代码。然而,在完全可执行之前,我们需要将所有对象文件链接在一起。这不会更改代码,只是为丢失的符号填充所有地址。代码的格式保持不变。

在linux上,对象文件是ELF格式的。

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

相关内容

最新更新