我有个让我求生不得求死不能的绝世超级非常无敌霹雳困难的难题!!!

来源:百度知道 编辑:UC知道 时间:2024/06/30 19:46:16
如题,为什么有些软件在要分WINDOWS和UNIX版?请不要笼统的说什么不兼容,我也知道不兼容为什么不兼容呢?是不是因为API的关系?还是运行库问题?还是什么其他原因?有些游戏就分什么UNIX版,WIN版.但是有些又可以在任何系统下安装哦.奇怪...
另外,比如我在XP下用C编写一个小程序,能在XP运行,那能否在UNIX下运行呢?可以是因为什么,不可以又是因为什么?
此问题困扰本人多年,导致本人终日郁郁不欢,茶饭不思,度日如年,请求个位达人能救小弟于此水深火热中,感谢不尽啊!!!
问题补充:内核不同为何会影响到软件?是软件在运行的时候是否一定要调用到系统内核的文件呢?难道软件不能独立"自己吃自己"的运行吗?

我也不是很明白,没时间看书。
因为这里涉及到一个可执行二进制文件格式的问题。它们使用不同的格式,自然就是不兼容的。你运行一下file命令就会发现:
Thunder.exe: PE32 executable for MS Windows (GUI) Intel 80386 32-bit
/bin/cat: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
库和各种环境大大的不同,怎么可能运行?
再者,比如你一般在WINDOWS下下载到是一个exe文件吧,它已经是二进制文件了,已经具有windows下的格式了,那么怎么可能在LINUX下运行安装呢?要说从源代码编译安装,WINDOWS下的软件又怎么会让你看到源代码呢?
操作系统是什么?应用程序要运行在操作系统之上吧?操作系统是根本吧,根本不一样,又如何可能兼容呢?
你说的兼容那是一些解释型程序吧?比如java,perl,因为它们依赖于解释器,只要你安装了解释器,它们就可以由解释器去产生机器代码执行。

你用C写一个程序,要编译+汇编+连接吧。你若在WINDOWS下编译,当然产生了东西只能在WINDOWS下运行了。自然你也可以拿源代码到UNIX下编译,产生的最终程序当然也只能在UNIX运行。关键在于你在哪编译的,你要在WINDOWS下运行,当然不能在写程序的时候用到UNIX特有的库,要在UNIX运行,当然也不能用WINDOWS下特有的库。假如你只是写一个printf("%s\n","hello world!");,那拿到哪编译都成,只要你不用到include <unistd.h>。我菜,只能解释这么多。

内核不同为何影响到软件?简单的说,它们具有不同的管理资源、调度资源的方式吧。。。 数据结构也大大的不同吧。说到程序,程序与操作系统交互,这里就存在一个接口的问题,也就是API啊。API能一样吗你觉得?什么叫自己吃自己?你要在CPU上运行得使用CPU