日期:2014-05-16  浏览次数:20591 次

在windows上开发linux程序以及vice verse

当然不是用VM

1 windows上开发linux应用程序(看用于搭建arm-linux开发环境)

cygwin是在Windows下模拟Linux开发的及其成功的一个项目。首先我们可以想当然的认为,只要gcc等可以被移植到Windows下,那么几乎所有GNU工具就都可以移植到Windows下,——我们确实有对应的Windows版本的gcc,可是,仍然有些东西是不能直接移植到Windows下的,因为毕竟Linux不同于Windows,系统核心不同,底层细节不同,甚至没有多少相同或者类似的实现,尽管KDE3.5酷似XP,KDE4也像极了Vista。

?

  但是,cygwin使得这都变得不再重要,——将Linux的底层用Windows的底层实现,封装了众多DLL,从而将这种貌似不可能的事情变得及其简单,甚至源码包可以同在Linux下一样,./configure, make, make install,只要念三个咒,程序就装在cygwin下了。——这时候,我们得到的是“准”Windows应用程序,标准的、带有Windows经典PE文件头,可以在cmd下执行,可以通过鼠标双击运行……只是它的执行必须依赖于cygwin的一系列DLL而已。

?

  目前看来,这似乎是尽管可能不是唯一却一定是最流行的在Windows下进行Linux程序开发的途径,——只要在cygwin下可以make成功,那么,在所有兼容POSIX标准的UNIX上,不论BSDMac XSun Solaris,还是日渐流行的各种发行版的Linux,包括LinuxLiveCD,几乎都可以保证编译通过。

?

  这样,尽管我们还没有从Windows下直接生成可以在Linux下执行的可执行二进制文件,但是一般来说得到没有问题的源码已经可以了……

How about Mingw?

?

2 linux上开发windows应用程序

Linux用户应该都知道有这么一个东东,号称可以将大多数Windows的二进制应用程序直接“移植到”Linux下使用,——对,这就是大名鼎鼎的wine。作为一个开发者,光知道有个wine可以用还是不够的,你要知道,我们还有个将gcc进行相关包装的winegcc

?

winegcc的目标号称是将Windows下的程序源码尽量保持兼容的在Linux下编译通过,并生成可以在wine下执行的应用程序,——这个目标是基本可以实现的,至少我的测试是,使用Windows API的应用程序完全可以编译通过,而且生成的应用程序和Windows下的程序看上去没有什么大的差别,——当然,我的测试仅针对C程序,C++和MFC的程序没有进行测试,所以不知道是什么效果。

?