为什么在Linux上运行的代码不能在Windows上运行?

时间:2014-12-12 06:58:56

标签: c++ c linux windows unix

我只是想说,如果两个操作系统在同一硬件上运行,并且可执行文件包含0和& 1s只用机器语言,那为什么我们必须为它们中的每一个重新编译而不只是改变可执行文件的扩展名,比如* .out到* .exe来运行代码?

2 个答案:

答案 0 :(得分:1)

Windows和Linux可执行文件的格式不同。即使它们具有相同的格式,两个操作系统提供的API也不同。

当Apple从PowerPC迁移到x86时,Apple遇到了类似的问题。他们的解决方案是Universal Binaries。这些作为用户的单个可执行文件出现;然而,在引擎盖下,它们是捆绑在一起的两个独立的二进制文件。

答案 1 :(得分:0)

以类似的方式回答 - 因为操作系统以不同方式解释文件的内容。在文件头中查找不同位置的不同内容等等...... 因此Windows会尝试将Linux二进制文件解释为PE并失败