红联Linux门户
Linux帮助

兼容层技术让 Windows开发登陆Linux

发布时间:2006-08-30 13:00:38来源:红联作者:邱建元
  在2000年、2001年的时候,我们就在研究如何把超级解霸移植到Linux上。在我们开发完VOD服务端Windows版之后,本想直接移植到Linux上。原以为只需要1~2周即可,事实上,我们用了两个多月才初步实现这个想法。而且我们完成的Linux上的VOD服务端与Windows版本有太多不同。它几乎是重新开发的一个功能不齐全(约是Windows版的最基本部分)的版本。这也是我们的第一个移植到Linux的产品。总结之后,我们认为不能这样移植,因为体系的不同,许多东西根本无法移植。我们必须解决体系的不同性,才能减少移植的工作量,而且可以保证功能的统一,这就是“兼容层”开发的缘起。

开创“兼容层”

  如果有了统一的“兼容层”,我们公司的各种软件可以移植到Linux,而且还可以帮助其它公司移植产品,并且可以克服Linux系统之间的兼容性问题,可以做到二进制兼容。也就是说,同一份软件无需进行源码重编译,就可以直接运行在红帽7.X、8.X、9.X以及其它Linux发行版之上。这一点十分重要。

  “兼容层”的开发十分困难。由于“兼容层”是一个Windows体系,而开放源码的东西都是Linux体系,这本身就难以“兼容”和移植。一切从头开始,我们把“兼容层”分为两层结构:一是Linux的装入层(只有五六个C文件),用于启动;二为“兼容层”本身,这是Windows程序。我们首先解决的是如何利用VC来开发Linux上运行程序的问题,后来就是在Windows上开发调试,最后是在Linux上验证的重复性工作。我们一做就是三年!

  超级解霸3000移植到Linux上是在2003年中旬,兼容层第一次可以受控地运行!这之后,我们的目标是要让Linux用户与Windows用户以同样的使用习惯来使用超级解霸3000。我们基本上做到了这一点,只有3D加速、切换图形模式方面以及硬件YUV加速没有做到。

  超级解霸3000的Linux版本还可以直接使用其中的“兼容层”来运行及安装其它Windows软件。“兼容层”本身是打包的自安装程序。class及CLASSBIN.dll是一个完整的“兼容层”,再加上一个Windows的安装程序就可以在Linux上直接安装。如有一个软件的主程序为SETUP.EXE,只需把class改名与SETUP.EXE一样的SETUP即可。在Linux上可执行程序一般没有后缀,这样三个文件SETUP(由class改名)+CLASSBIN.dll+SETUP.EXE就成了一个可直接在Linux上运行的应用程序。我们只需要运行SETUP命令即可。

  一个软件需要了解所运行的环境。超级解霸3000是通过GetVersionEx函数来判断是否运行于Linux之上,其中的返回结构中OsIinfo szCSVersion的字符串为“Linux”,就可以确定是在Linux之上。从超级解霸3000的角度来看,Linux与Windows的差别就像Windows 95与Windows NT的差别一样。只要重新审查所用到API是否在“兼容层”中实现,就可以避开一些问题,就像在Windows NT上避开Windows 95的VXD调用一样。这样,超级解霸3000的移植工作就只用了一星期的时间。

Linux的新玩法

  目前的“兼容层”是第一版,它只支持纯32位的应用软件。最新版本的超级解霸V8在其上还不能用,因为它用到IE的Web功能。我们目前还在开发“兼容层”2.0,以进一步支持16位、DOS应用以及IE。它完成后将有更多的应用软件可以直接在Linux运行,包括超级解霸V8。

  这里提一个好玩的玩法:利用“兼容层”可以把计算机变成“双模式”,即让Linux直接进入“兼容层”所支持的超级解霸3000。这样,我们一开机就可以玩多媒体,用完关机即可,不会影响Windows系统,也不需要运行KDE成GNOME。方法是把/etc/inittab中的最后一行x:5:respawn:/etc/x11/prefdm-nodaemon改写成 x:5:respawn:/herosoft/bin/class c:/herosoft/hero3000/sthsdvd.exe。

  另外,我们还在开发让Linux更加好玩的“Windows兼容模式”和“Windows服务模式”。

  “Windows兼容模式”,是以人们熟悉的Windows应用习惯在Linux上使用Windows软件。有了这一模式,一般的用户可以按非常熟悉的方式来使用Linux系统,甚至感觉不到是在使用Linux,以为在使用Windows系统。

  “Windows服务模式”是可以把为Windows服务器开发的各种服务移植及运行在Linux之上,服务软件把Linux服务器当作Windows服务器来工作。它主要用于像VOD系统的服务器端这样的应用软件。我们最新的VOD 3.0已经在Linux上正常工作运行。

要走得更远

  2003年“非典”即将结束的时候,倪光南院士和有关人员在听说我们有“兼容层”技术之后,立刻来到我们公司进一步考察了解。在精神上,他们给予我们很大支持,也进一步支持我们的工作深入下去。倪院士在了解到“兼容层”的体系是用Windows的方法来解决Windows的问题,尤其是我们可以把开发工具VC++4.X及6.X在Linux上直接运行开发时,他表示这是一个创举。让Windows的开发人员可在Linux上直接开发的意义十分重大。 “兼容层”还受到国内外公司的关注。我们已经与某BIOS系统软件公司进行深入合作,另外,Intel公司相关专家参观后,连称“兼容层”是面向世界的技术。
文章评论

共有 0 条评论