2012-01-27 121 views
4

对于大学课程我都要写这应该在Linux和Windows上运行一个HTTP服务器。 我有一个不起眼的Linux机器,我不认为可以处理任何类型的重虚拟环境中,无论是我愿意去通过安装它的麻烦。在Linux上建立一个开发环境,针对Linux和Windows

这是我的第一个项目足够复杂(我估计〜.5个月就开发)需要足够舒适的短编码和测试会话(后者在两个平台上,当然)之间快速交替的环境。

所以,我想知道什么可能是最好的设立这种情况。我认为在Wine上进行测试是可以的(毕竟这不是现实世界中的事情),并且我为Windows定位部分安装了MinGW。

基本上,一个简单的编写良好的makefile可以解决我的问题......它应该构建Linux和Windows二进制文件并将它们放在各自的文件夹(Wine子树中的Windows)中,而我全做完了!但是我对这件事情感觉很缺乏经验,我真的不知道从哪里开始。也许化妆手册,AHAH!:)

想法,建议,什么我没想到/知道! 谢谢!

(PS。我打算使用emacs作为编辑,也许学习VIM。除非日食提供某种天网般的插件是完全解决这个问题... :)

回答

1

你上正确的轨道。这并不复杂,真的,感谢MinGW。你基本上需要两件事:

  1. 该代码必须是可移植的跨操作系统。 MinGW有一些POSIX支持,但您可能需要使用Cygwin才能使用POSIX接口,或者有自己的兼容层来与操作系统连接。我可能会选择Cygwin,因为那样你只能针对POSIX进行编码,而不必测试和调试兼容层。另外,请确保您不会使用任何特定操作系统的外部库。不可移植的代码通常会导致编译错误,但确保您无论如何都要彻底测试应用程序。

  2. 靶向Linux和Windows的工具链。你已经有了它们,你只需要正确地使用它们。通常情况下,在交叉编译期间调用工具链时,您会使用像$(CROSS_COMPILE)这样的变量作为前缀。因此,在为Linux编译时,可以调用gcc,ld等(使CROSS_COMPILE变量为空),并且在为Windows编译时调用例如i486-mingw32-gcc,i486-mingw32-ld等,即CROSS_COMPILE = i486-mingw32-。或者只是根据目标定义CC,LD等。

我在Linux上写了一个小游戏,并在Windows上运行。如果你使用browse the code,你可以看到代码旁边没有#ifdef jungle(基本上只是为Linux启用了一些额外的调试功能),并且Makefile也很简单,没有复杂的交叉编译处理,只是可以覆盖CC等喜欢它应该是。由于许多重要的开源软件都是以这种方式编写的(特别是桌面和嵌入式设备使用的软件),所以您还应该能够找到许多关于如何正确设置构建环境的其他示例。至于在Windows上测试应用程序,我认为最好的选择是如果你能找到一个真正的Windows机器。如果你做的一切都正确,它应该像Linux一样运行,你不需要在两个操作系统上连续测试你的应用程序。如果在Windows机器上进行测试是不可能的,虚拟机将成为下一个最佳选择,但它可能会更难以设置。 Wine是一个很好的备份计划,但如果您只在Wine上进行测试,我不认为您可以确定您的应用程序在Windows上运行良好。

+0

从什么时候MinGW为Windows提供POSIX实现?参考?? – 2012-01-27 23:09:47

+0

你说得对,我把它和Cygwin混淆了。纠正。 – Antti 2012-01-27 23:24:02