我知道用高级语言写的程序最终是要翻译成目标CPU的指令。 那么问题来了,mac系统和windows系统用的都是x86 或者 x64的cpu指令集。也就是翻译的目标cpu指令应该是一样的不是吗? 那么为什么windows的软件不能再mac上执行呢?
有两个主要原因: 可执行文件格式不一样,windows下是PE格式,mac是ELF格式。 windows和mac的操作系统不一样,系统库也不一样。所以无法兼容。 当然可以通过增加中间层的方式来实现兼容。 比如java代码编译成bytecode,然后通过java虚拟机执行。在这种情况下bytecode通用,每个系统的java虚拟机不一样。 python, php之类的脚本语言也类似,都有编译成中间码,然后每个系统和硬件建构下都有不同版本的运行环境。
有两个主要原因:
当然可以通过增加中间层的方式来实现兼容。 比如java代码编译成bytecode,然后通过java虚拟机执行。在这种情况下bytecode通用,每个系统的java虚拟机不一样。 python, php之类的脚本语言也类似,都有编译成中间码,然后每个系统和硬件建构下都有不同版本的运行环境。