在Java中,当我们编译文件时,我们得到字节码,然后用虚拟机执行。
在C ++中怎么样?当我们用g ++编译文件时会发生什么,我们得到汇编代码或二进制代码?
答案 0 :(得分:2)
C和C ++被编译成目标文件。这些文件包含可直接在目标处理器上执行的机器代码。但是,在完全可执行之前,我们需要将所有目标文件链接在一起。除了填写缺失符号的所有地址之外,这不会更改代码。代码的格式保持不变。
在linux上,目标文件采用ELF格式。
然而,可以使用链接时优化来编译文件。除了机器代码之外,这通常还会产生字节码。当链接时间优化链接时,链接器将在执行交叉编译单元(目标文件)优化时将字节代码转换为机器代码。