window和linux交集仅仅是用户界面长得差不多吗?它对已经编译了的程序的执行方式的交集难道是0?

|

这是一些比较底层的东西,主要是系统调用应用程序的方式不同

因为WINDOWS下的应用程序文件有其特定的格式,

所以其实在LINUX下只要做一个中间转换程序就可以了

当然,做起来太难了

如果想弄懂这个问题,而且又有时间的话,建议去看一下LINUX的源代码

|

应用程序需要底层的操作系统的支持和库的支持。在windows下面就是需要windows api以及相应的库来支持程序的运行。在linux下面就需要系统调用和相应的库来支持。

linux下的系统调用和window下的api本质原理上是相似的,但是具体的实现是不兼容的。另外,支持程序运行的库其具体的实现也是不同的。

所以windows下面的程序不能在linux下面运行。

当然,只要消除这些差异,程序也是可以移植的。

比如:

1、不使用造成差异的api或者系统调用。这一点在win98,win2000和win NT之间也成立。在unix和其他类unix操作系统种也成立。

2、不使用基于某个操作系统平台的库。如果只使用标准的C++库,而不使用MFC之类的基于window平台的库的C++程序。我想,在linux平台下重新编译也是可以运行的。

另外,如果要跨平台移植。比如从x386芯片移植到M68K芯片,那么除了系统调用(api)和库的问题,影响移植的还有指令系统的问题。

|

MS下的程序在linux下不能用的原因很简单,是因为不同的操作系统对应用程序提供的接口是不一样的。

别说MS下的程序在linux下不能用,就是windows下的程序在dos下也不能用啊,那就是因为windows可以提供的接口dos无法提供,相反,因为dos可以提供的接口windows基本可以提供,所以dos下的程序很多可以在windows下跑。

|

编译结果不同

|

使用不同的语言编写的,当然不能兼容呀。QQ都不行何况其它。

|

形象一点比喻,就好像你在外国说中国话为什么几乎没人能听懂。

不过有不少外国人开始学习汉语,就好像wine,于是linux下可以执行一部分windows程序。

|

TO kes2000(云之雾):

微软的API的内部机制和实现应给是有版权或者patent的吧.

|

看看PE格式,嘿嘿,大不同