为什么机器码操作系统中的可执行文件依赖?

Man*_*ani 6 c operating-system

在Windows中,当我编译一个简单的'C'程序时,我得到了最终的可执行机器代码.exe.在unix中使用gcc的同样的事情产生一个.out机器代码文件.

这些有什么区别?

我的基本问题是,.exe.out为机器代码,为什么他们依赖于操作系统?

就像在Unix中我无法.exe直接执行而在Windows中,我无法执行.outUnix.为什么会这样?

Ala*_*nse 12

这一切都与程序的加载方式有关.

Windows和Linux对于程序自定义的方式有不同的格式.

在Linux中,通常使用ELF格式.对于Windows,它是PE.

这些格式定义了执行机器指令所需的有关程序的不同数据.

此外,操作系统接口不同,因此需要使用不同的库并且需要进行不同的系统调用.

对于一个简单的程序,您通常可以在其他操作系统上重新编译以使其同时工作,但您将无法在两者上使用单个文件.