我只是想知道为什么有些游戏只是基于Windows而且不会在Mac OS X和Linux等其他操作系统上运行。是什么让它们与众不同,程序如何知道操作系统是Windows,Linux还是Mac? 此外,类似地,为什么Windows 7 32位驱动程序不能在64位上运行,反之亦然?
答案 0 :(得分:0)
除了Mac和Linux如何使用不同的可执行类型(他们使用Mach-O和ELF,据我所见)而不是Windows(PE),如果可执行加载器能够解析所有内容并将其加载到内存中很多事情都可能出错。库调用(例如printf(3)
)依赖于底层系统调用,后者调用操作系统的内核。对于printf(3),它会调用fstat(2)
,sbrk(2)
和write(2)
。 (请注意,这是newlib
库下的情况;我不确定其他标准C库。)据您所知,Windows的系统调用接口可能与Linux使用的非常不同,并且Windows甚至可能缺少Linux所具有的一些系统调用(如fork(2)
)