从Windows开发Linux的最佳设置?

时间:2009-06-08 13:11:35

标签: cross-platform development-environment x11

从Windows工作站开发Linux应用程序的最佳设置是什么?现在我通过SSH连接到我们的Linux开发服务器,并使用Eclipse,通过PuTTY通过SSH转发到在我的Windows工作站上运行的公共域版本的Xming。它有效,但不是很好; Eclipse的响应时间远远不够快(比我在速度较慢的Windows工作站上本机运行的Eclipse差得多),我无法调整一些对话框的大小,而且我还没有找到一种重新配置字体的好方法。

是否有更好的设置?

编辑:这适用于C / C ++开发。

15 个答案:

答案 0 :(得分:27)

Windows上的Linux选项:

仅限工具

鉴于您正在使用Eclipse,我将假设您需要一个完整的IDE,但如果您只使用GNU / Linux工具,那么有一些选择。

  • cygwin为您提供了一个包含许多工具的bash shell,包括一个X11服务器。这已经有一段时间了,已经成熟了。
  • msys是一种较小的,轻量级的替代cygwin。
  • GNU utilities for Win32是另一种轻量级选择。这些是本机版本的工具,而不是cygwin,它需要一个cygwin DLL来伪造其工具,使其认为它们在Linux上运行。

Windows进程中的Linux

有几个软件包将Linux作为Windows进程运行,而不像虚拟化那样模拟整个PC。他们使用Cooperative Linux,a.k.a。coLinux,仅限于32位系统。这些没有虚拟化的开销,并且由于您没有启动虚拟PC,因此启动速度更快。这在实验方面有点多,可能不像某些虚拟化选项那样稳定。

<强>虚拟化

虚拟化软件允许您在虚拟PC中启动另一个操作系统,该虚拟PC与主机操作系统共享硬件。这是非常经得起考验的。这里提供了很好的选择,可以在特定状态下拍摄Virtual PC的快照,暂停/恢复虚拟PC等。很高兴能够试用虚拟PC,添加一些软件包,然后恢复到之前的快照, “开始干净”。

就我而言......

听起来你的环境有不同的性能特征,但这是我的情况:我在我的Windows笔记本电脑上开始使用Eclipse(进行Rails开发),发现这种情况很慢,并且转而使用putty来ssh进入一个快速的Linux盒子。我通过运行在Linux服务器上的emacs进行编辑,使用Xming在Windows上显示。或者我在Windows上使用本机emacs,编辑通过NFS共享的文件。由于节省缓慢,后者在我的环境中变慢。

在家工作时,我放弃X因为远程客户端太慢,只需在putty窗口中运行emacs -nw。然后我使用GNU screen以便我有多个“窗口”,这样如果我的网络连接断开,我就可以轻松地从中断的地方恢复。

答案 1 :(得分:9)

我发现的最佳方法是:

  1. 保持您的代码可移植性
  2. 在桌面上本地开发
  3. 验证任何操作系统依赖关系(尽可能减少这些依赖关系)
  4. 定期部署到您的目标,测试&amp;调试那里
  5. 我知道这不是一个直接的答案,但是使用IDE进行X开发对于大多数免费工具来说都是痛苦的。我以这种方式工作的唯一方法就是当我在桌面上运行类UNIX时,所以X是原生的。如果您打算使用此方法,请在桌面上尝试商业X解决方案。

    除此之外,考虑放弃IDE并通过SSH,终端编辑器(例如vi,pico,ee,emacs),make / ant和gdb进行开发和调试。

    最适合您的方法是使用您的编程语言和您正在开发的应用程序类型。如果您正在进行GUI应用程序,那么使用X可能是唯一可接受的方法。如果您正在进行后台/守护进程开发,那么SSH和终端方法可能会起作用,尽管您可能希望对vi或emacs非常熟悉。

    编辑:刚刚注意到您正在进行C / C ++开发。如果您还没有,请考虑使用跨平台框架。使用QtAPRACEPoco等内容可以在Windows下进行原生开发,并在Linux环境中执行部署/调试步骤。

答案 2 :(得分:7)

一个易于设置的选项是在Windows中本机运行Eclipse,但是通过Linux机器上的Samba共享(可以作为另一个驱动器安装)来部署代码(如果SMB不是选项,则可以安装SSH / SCP)然后通过SSH控制台在那里运行。

另一个易于设置的选项是在Linux上通过freenx或类似工具而不是完整的X会话进行开发,请查看以下答案:https://serverfault.com/questions/11367/remote-desktopping-from-windows-to-linux/11372#11372

其他选项(虚拟化,Linux内部运行的Linux,Cygwin)确实有效,但有其缺点,例如机器要求更高,设置更难,或者与实际的Linux环境不够相同,但可能非常值得如果你有机器并且场景证明了它们的使用是合适的。

在Linux端做所有事情总会有一些缺点 如果您的机器是Windows。

我个人有一个Linux盒子,其他人都有Windows和 在虚拟机内部进行Windows开发,但它耗费了大量的RAM和一些网络设置的麻烦。

答案 3 :(得分:7)

对于开发,我通常在Windows机器上使用Linux虚拟机。它可能会让运行到浴室的Linux用户洗手,但是我在Visual Studio中进行了所有开发,并且我有一个自定义Visual Studio插件,它通过虚拟机调用G ++并将输出传递到VS输出窗口。通过快速更改组合框,我可以构建和测试Windows或Linux。

答案 4 :(得分:5)

我发现coLinux在Windows for Linux上开发时非常有用,它基本上是一个与Windows操作系统并行运行的Linux系统(即作为服务),并且可以配置为简单地显示在您的LAN上,基本上就像虚拟机一样。此外,它比CygWin更加全面,它的性能非常出色 - 我可以轻松地在coLinux下运行非平凡的东西,并且仍然以90+ fps运行模拟器。

此外,coLinux可以轻松设置为运行X11和窗口管理器,如gnome / KDE,以便您可以使用类似vnc的东西来访问您的Linux桌面。

  

Cooperative Linux是第一个在Microsoft Windows上优化运行Linux的免费开源方法。更一般地说,Cooperative Linux(简称coLinux)是Linux内核的一个端口,它允许它在一台机器上与另一个操作系统一起协同运行   。例如,它允许人们在Windows 2000 / XP上自由运行Linux,而无需使用商用PC虚拟化软件   例如VMware,其方式比使用任何通用PC虚拟化软件更优化。

colinux screenshot
(来源:colinux.org

答案 5 :(得分:5)

有多种解决方案,我建议使用No.1

  1. 您可以使用Vagrant之类的工具。 Vagrant是一种在单个工作流程中构建和管理虚拟机环境的工具。通过易于使用的工作流程并专注于自动化,Vagrant降低了开发环境的设置时间,提高了生产平价。因此,您在Windows PC中进行编码,并使用Vagrant在Linux系统上编译/运行应用程序。 Vagrant是免费的!类似工具:Docker也可以使用。对于这个设置,您可以使用任何IDE,我建议使用VSCode,它非常适用于带有智能感知的C / C ++,但Eclipse也可以使用。

  2. 运行Linux风格的VM(虚拟机)作为Windows内的客户操作系统。从VirtualBox开始,这是免费的。

  3. 像Nitrous.io这样的基于Web的工具已停产,但您可以托管自己的Nitrous IDE开源版本Nitrous Solo,它允许您在首选的云提供商上托管您自己的Nitrous IDE实例

  4. Windows 10提供了Windows Subsystem for Linux,尝试使用它来编译和运行您的项目。这需要64位版本的Windows 10周年更新或更高版本(构建1607 +)。

  5. Cygwin / MinGW是适用于Windows的流行bash工具,可能可以编译和/或运行您的应用程序。

答案 6 :(得分:4)

Cygwin可能会有所帮助。

答案 7 :(得分:4)

出于完全相同的原因,我完成了你想要做的事情:完全控制输出(你的当前解决方案存在字体问题)和比远程Linux开发盒慢得多的Windows机器。

大多数答案都是假的:拥有“Linux开发环境”不仅仅是“拥有IDE”。这就是让整个Un * x电源触手可及。

是本地还是远程Linux服务器?带宽问题?因为在局域网上,即使是旧的100 MBit / s LAN,FreeNX 也会飞。 Linux服务器上的负载如何?

在Linux系统上设置免费的FreeNX,在Windows机器和宾果游戏上安装免费的FreeNX客户端,您的Linux开发环境就在您的指尖。

FreeNX 比VNC更高效,它是夜晚(VNC实际上非常糟糕,甚至与Windows的远程桌面相比......但FreeNX过得很快)。

关于速度,很久以前,我设置了我的主要Linux工作站(当时是Pentium 4 / 2GB内存),我正在使用IntelliJ IDEA(另一个IDE)全职开发,提供一个完整的X会话(完成一个窗口管理器等),另一个开发人员远程显示...运行另一个IntelliJ实例(并访问所有Un * x细节)。它是在LAN 100 Mbit / s上,就好像该应用程序是其他开发人员的本地应用程序。

无论如何,在今天的硬件上我无法想象它是如何工作的:我现在有一台Core 2 Duo / 4GB的ram作为我的主桌面和千兆网卡。

这样的设置在4年前完美运行,今天它可以完美运行。

现在,如果你告诉我你有带宽问题,或者你的帐户上的Linux机器负载很重,或者它不在局域网上,那么事情可能会有所不同......

想要一个强大的Un * x系统的年轻开发者如何在我现在咨询的公司(只有Windows桌面)上做这件事?他们中的大多数都带着他们闪亮的MacBook Pro并用它来开发;)

答案 8 :(得分:3)

您可以在Windows上尝试其他X服务器,例如xwin32和hummingbird。请注意,这些都是商业实现。

另一种解决方案是在Windows机器上安装VM服务器并在VM上安装Linux。选项包括VMware(非免费)和Microsoft Virtual PC(免费下载)。 VMware比VirtualPC好得多(64位支持,更有动力支持Linux客户端操作系统等)。也可能

答案 9 :(得分:3)

我也在使用xming,并且遇到了与Eclipse相同的问题。显然,切换到cygwin都不会让它足够快。最后我转而通过xming在vim中进行开发。它不需要花费太多时间来熟悉所有关键组合,并且性能绝对平滑。实际上,现在有时我甚至在本地工作时也会使用vim。

答案 10 :(得分:3)

具有基于Linux的开发环境的虚拟机,或者某些与工具链无关的IDE的本地副本(例如Notepad ++,尽可能通过MinGW或CygWin进行测试),或者只需在Notepad ++中编写并保持上传到您的开发机器并在那里进行测试,这就是我的工作。

答案 11 :(得分:1)

你可以看看在linux盒子上设置一个svn服务器,然后使用像TeamCity这样的东西来提交构建。您可以在本地编写代码,并在需要编译时进行提交。

答案 12 :(得分:0)

你可以尝试使用任何Linux发行版的Windows,甚至windows-store有windows的ubuntu,SUSE等,这可以帮助减少你的编码工作。这个linux发行版包含linux shell,内核等,因此每次调试或测试代码时都不需要linux系统。

你也可以使用Visual Studio Code,它比eclipse好得多,而且甚至在linux和mac中都支持。

在Windows商店中查看this以获取ubuntu发行版。

Linux发行版也可以从其他来源下载,但微软要求使用Windows商店中的发行版。

答案 13 :(得分:0)

我不知道是否有更现代的路线,但我的标准方式是在Microsoft Windows中运行X Windows,这样您就可以在Ubuntu机器上运行任意数量的应用程序并控制它们并显示它们在Microsoft Windows中

检查Check

答案 14 :(得分:-1)

使用Linux!我通常还有另一个问题:在linux下开发win。 没有理由不这样做:我几乎一直都在虚拟盒子上赢得胜利。 Linux附带了许多开发工具。

问题是:

它是一个图形界面吗?   - 如果没有,只要您的代码STD /便携式,您就没有问题。    (X也允许你简单的东西,但今天你需要更多的应用程序。)   - 如果是,则在实际移植代码时会遇到很多问题    在运行平台上。

它应该是linux和windows之间的可移植/可交换吗?   - 如果没有,只需在本机操作系统上进行开发。方式少痛苦。你们两个都有Eclipse    平台。即使您考虑在稍后阶段移植代码,    先做一件事。

我在linux下开发了几个图形应用程序,实际上是现在 仅在windows下使用。我的食谱是:GTK / GNOME。我让它与cygwin和mingw一起运行。 但我猜Qt也有相同的可用环境。 我的代码继续赢了,没有任何变化! [好吧..几个触摸文件路径......但是是一个bug ..]

除非你确定,否则没有办法在win下开发并希望在linux上运行 不要使用任何win libs。那就是:在图形应用程序中几乎没有机会。或者很多 检查...或者您将不会使用任何获胜设施。忘记Visual Studio。

检查葡萄酒和winehq页面。

除非问题是另一个,例如:使用团队共享设施,或svn或其他。 这不是代码开发问题,而是组织方面的问题。

底线: 在自由市场上获取免费代码然后在自由市场上移植专有代码更容易。

双 ˚F