从Windows工作站开发Linux应用程序的最佳设置是什么?现在我通过SSH连接到我们的Linux开发服务器,并使用Eclipse,通过PuTTY通过SSH转发到在我的Windows工作站上运行的公共域版本的Xming。它有效,但不是很好; Eclipse的响应时间远远不够快(比我在速度较慢的Windows工作站上本机运行的Eclipse差得多),我无法调整一些对话框的大小,而且我还没有找到一种重新配置字体的好方法。
是否有更好的设置?
编辑:这适用于C / C ++开发。
答案 0 :(得分:27)
Windows上的Linux选项:
仅限工具
鉴于您正在使用Eclipse,我将假设您需要一个完整的IDE,但如果您只使用GNU / 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)
我发现的最佳方法是:
我知道这不是一个直接的答案,但是使用IDE进行X开发对于大多数免费工具来说都是痛苦的。我以这种方式工作的唯一方法就是当我在桌面上运行类UNIX时,所以X是原生的。如果您打算使用此方法,请在桌面上尝试商业X解决方案。
除此之外,考虑放弃IDE并通过SSH,终端编辑器(例如vi,pico,ee,emacs),make / ant和gdb进行开发和调试。
最适合您的方法是使用您的编程语言和您正在开发的应用程序类型。如果您正在进行GUI应用程序,那么使用X可能是唯一可接受的方法。如果您正在进行后台/守护进程开发,那么SSH和终端方法可能会起作用,尽管您可能希望对vi或emacs非常熟悉。
编辑:刚刚注意到您正在进行C / C ++开发。如果您还没有,请考虑使用跨平台框架。使用Qt,APR,ACE或Poco等内容可以在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.org)
答案 5 :(得分:5)
有多种解决方案,我建议使用No.1
您可以使用Vagrant之类的工具。 Vagrant是一种在单个工作流程中构建和管理虚拟机环境的工具。通过易于使用的工作流程并专注于自动化,Vagrant降低了开发环境的设置时间,提高了生产平价。因此,您在Windows PC中进行编码,并使用Vagrant在Linux系统上编译/运行应用程序。 Vagrant是免费的!类似工具:Docker也可以使用。对于这个设置,您可以使用任何IDE,我建议使用VSCode,它非常适用于带有智能感知的C / C ++,但Eclipse也可以使用。
运行Linux风格的VM(虚拟机)作为Windows内的客户操作系统。从VirtualBox开始,这是免费的。
像Nitrous.io这样的基于Web的工具已停产,但您可以托管自己的Nitrous IDE开源版本Nitrous Solo,它允许您在首选的云提供商上托管您自己的Nitrous IDE实例
Windows 10提供了Windows Subsystem for Linux,尝试使用它来编译和运行您的项目。这需要64位版本的Windows 10周年更新或更高版本(构建1607 +)。
答案 6 :(得分:4)
Cygwin可能会有所帮助。
答案 7 :(得分:4)
出于完全相同的原因,我完成了你想要做的事情:完全控制输出(你的当前解决方案存在字体问题)和比远程Linux开发盒慢得多的Windows机器。
大多数答案都是假的:拥有“Linux开发环境”不仅仅是“拥有IDE”。这就是让整个Un * x电源触手可及。
是本地还是远程Linux服务器?带宽问题?因为在局域网上,即使是旧的100 MBit / s LAN,FreeNX 也会飞。 Linux服务器上的负载如何?
在Linux系统上设置免费的FreeNX,在Windows机器和宾果游戏上安装免费的FreeNX客户端,您的Linux开发环境就在您的指尖。
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