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

这可能是一个微不足道的问题,但我很难向我的小弟弟解释,即使两个操作系统在同一台计算机上运行,​​Windows二进制文件也不能在Linux等另一个不同的操作系统上运行。 如果二进制代码(操作代码)必须相同才能在相同的底层体系结构(比如Intel 32位)中执行,那么Windows和Linux(甚至Ubuntu和RadHat Linux)的二进制代码之间有什么区别? 在处理器执行之前,在指令级有任何运行时修改二进制文件吗? 我如何以平庸的人/他能理解的简单的术语来解释。

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