当前位置: 技术问答>linux和unix
谁能细说一下为什么window的程序在linux下面不能使用?
来源: 互联网 发布时间:2015-03-28
本文导语: window和linux交集仅仅是用户界面长得差不多吗?它对已经编译了的程序的执行方式的交集难道是0? | 这是一些比较底层的东西,主要是系统调用应用程序的方式不同 因为WINDOWS下的应用程序文...
window和linux交集仅仅是用户界面长得差不多吗?它对已经编译了的程序的执行方式的交集难道是0?
|
这是一些比较底层的东西,主要是系统调用应用程序的方式不同
因为WINDOWS下的应用程序文件有其特定的格式,
所以其实在LINUX下只要做一个中间转换程序就可以了
当然,做起来太难了
如果想弄懂这个问题,而且又有时间的话,建议去看一下LINUX的源代码
因为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)和库的问题,影响移植的还有指令系统的问题。
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都不行何况其它。
http://expert.csdn.net/Expert/topic/2048/2048427.xml?temp=.7167169
http://expert.csdn.net/Expert/topic/2048/2048427.xml?temp=.7167169
|
形象一点比喻,就好像你在外国说中国话为什么几乎没人能听懂。
不过有不少外国人开始学习汉语,就好像wine,于是linux下可以执行一部分windows程序。
不过有不少外国人开始学习汉语,就好像wine,于是linux下可以执行一部分windows程序。
|
TO kes2000(云之雾):
微软的API的内部机制和实现应给是有版权或者patent的吧.
微软的API的内部机制和实现应给是有版权或者patent的吧.
|
看看PE格式,嘿嘿,大不同
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。