当前位置:  技术问答>linux和unix

谁能细说一下为什么window的程序在linux下面不能使用?

    来源: 互联网  发布时间:2015-03-28

    本文导语:  window和linux交集仅仅是用户界面长得差不多吗?它对已经编译了的程序的执行方式的交集难道是0? | 这是一些比较底层的东西,主要是系统调用应用程序的方式不同 因为WINDOWS下的应用程序文...

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都不行何况其它。
http://expert.csdn.net/Expert/topic/2048/2048427.xml?temp=.7167169

|
形象一点比喻,就好像你在外国说中国话为什么几乎没人能听懂。
不过有不少外国人开始学习汉语,就好像wine,于是linux下可以执行一部分windows程序。

|
TO kes2000(云之雾):

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

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

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 给分问题:如何展开JTree中的节点,内在细说……在线,解决即给分……
  • 细说 Form 表单


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3