为什么一个操作系统(Windows)的二进制文件不能在其他(Linux)中运行相同的底层架构?

时间:2013-05-21 02:58:29

标签: linux windows operating-system executable

这可能是一个微不足道的问题,但我很难向我的小弟弟解释,即使两个操作系统都在同一台机器上运行,Windows二进制文件也不会在另一个不同的操作系统(如Linux)中运行。如果二进制文件(操作码)必须相同才能在相同的底层架构(比如英特尔32位)中执行,那么Windows和Linux(甚至是Ubuntu和RadHat Linux)的二进制文件之间有什么区别?在处理器执行之前,是否在指令级别对二进制文件进行了运行时修改?我如何用非专业人士/简单的术语解释他能理解的内容。

1 个答案:

答案 0 :(得分:4)

不同的操作系统有不同的ABIs,需要使用不同的loaders。如果其他操作系统的加载程序可用(例如,通过Wine),则可以加载可执行文件,此时API变得很重要。