对于大学类(class),我必须编写一个应该在 Linux 和 Windows 上运行的 http 服务器。 我有一台不起眼的 Linux 机器,我认为它无法处理任何类型的繁重虚拟环境,我也不愿意经历安装它的麻烦。
这是我的第一个足够复杂的项目(我估计大约需要 1.5 个月的时间来开发),需要一个足够舒适的环境来在简短的编码和测试 session (当然,后者在两个平台上)之间快速切换。
所以,我想知道什么是针对这种情况的最佳设置。我认为在 Wine 上测试它是可以的(毕竟这不是真实世界的事情),并且我为 Windows 目标部分安装了 MinGW。
基本上,一个编写良好的简单 makefile 可以解决我的问题...它应该构建 Linux 和 Windows 二进制文件并将它们放在各自的文件夹中(Wine 子树中的 Windows 文件夹),我就完了完毕!但是感觉这东西很没经验,真的不知道从何下手。也许是制作手册,啊!:)
想法、建议,以及任何我没想到/不知道的事情! 谢谢!
(PS。我打算使用emacs作为编辑器,或者学习vim。除非eclipse提供某种类似天网的插件来完全解决这个问题...:)
最佳答案
您走在正确的轨道上。多亏了 MinGW,它并没有那么复杂,真的。您基本上需要两件事:
代码必须可以跨操作系统移植。 MinGW 有一些 POSIX 支持,但您可能需要使用 Cygwin为了能够使用 POSIX 接口(interface)或拥有自己的兼容层来与操作系统交互。我可能会选择 Cygwin,因为这样你就可以只针对 POSIX 进行编码,而不必测试和调试你的兼容层。另外,请确保您不会使用任何特定于操作系统的外部库。不可移植的代码通常会导致编译错误,但无论如何都要确保对应用程序进行全面测试。
针对 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 丛林(基本上只是为 Linux 启用了一些额外的调试功能),Makefile 也很简单,没有复杂的交叉编译处理,只是可以覆盖 CC 等。就像它应该的那样。由于许多重要的开源软件都是以这种方式编写的(尤其是桌面和嵌入式设备使用的软件),您还应该能够找到许多关于如何正确设置构建环境的其他示例。
至于在 Windows 上测试应用程序,我认为最好的选择是如果您能以某种方式找到一台真正的 Windows 机器。如果你做的一切都正确,它应该像在 Linux 上一样运行,你不需要在两个操作系统上连续测试你的应用程序。如果无法在 Windows 计算机上进行测试,则 VM 将是下一个最佳选择,尽管设置它可能会更加困难。 Wine 是一个很好的备份计划,但我不认为如果您只在 Wine 上测试您的应用程序就可以确保您的应用程序在 Windows 上运行良好。
关于windows - 在 Linux 上设置针对 Linux 和 Windows 的开发环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9040880/