29

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

有更好的设置吗?

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

4

15 回答 15

28

Windows 上的 Linux 选项:

仅工具

鉴于您使用的是 Eclipse,我将假设您想要一个完整的 IDE,但如果您可以仅使用 GNU/Linux 工具,那么有几个选择。

  • cygwin为您提供了一个带有许多工具的 bash shell,包括 X11 服务器。这已经存在了一段时间并且已经成熟。
  • msys是 cygwin 的更小、更轻量级的替代品。
  • 用于 Win32 的 GNU 实用程序是另一个轻量级的替代方案。这些是这些工具的本机版本,与 cygwin 不同,cygwin 需要一个 cygwin DLL 来伪造其工具以认为它们在 Linux 上运行。

Windows 进程中的 Linux

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

虚拟化

虚拟化软件允许您在虚拟 PC 中启动另一个操作系统,该操作系统与主机操作系统共享硬件。这是非常可靠的。这里有一些不错的选择,可以在特定状态下拍摄虚拟 PC 的快照、暂停/恢复虚拟 PC 等。能够试验虚拟 PC、添加一些包,然后恢复到以前的快照和“开始清洁”。

在我的情况下...

听起来您的环境具有不同的性能特征,但这是我的情况:我开始在我的 Windows 笔记本电脑上使用 Eclipse(进行 Rails 开发),发现这很慢,然后转而使用 putty 将 ssh 连接到一个快速的 Linux 机器上。我通过在 Linux 服务器上运行的 emacs 进行编辑,使用 Xming 在 Windows 上显示。或者我在 Windows 上使用本机 emacs,编辑通过 NFS 共享的文件。由于保存缓慢,后者在我的环境中速度较慢。

在家工作时,我放弃了 X,因为它对远程客户端来说太慢了,只emacs -nw在一个腻子窗口内运行。然后我使用 GNU screen,这样我就有了多个“窗口”,这样如果我的网络连接中断,我就可以轻松地从中断的地方继续。

于 2009-06-08T13:31:46.443 回答
9

我发现的最佳方法是:

  1. 保持你的代码可移植
  2. 在您的桌面上进行本地开发
  3. 验证任何操作系统依赖项(尽可能减少这些)
  4. 定期部署到您的目标,在那里进行测试和调试

我知道这不是一个直接的答案,但是对于大多数免费工具来说,使用 IDE 通过 X 进行开发是很痛苦的。我以这种方式高效工作的唯一方法是当我在我的桌面上运行类似 UNIX 的系统时,所以 X 是本机的。如果您打算使用这种方法,请尝试在桌面上使用商业 X 解决方案。

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

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

编辑:刚刚注意到您正在进行 C/C++ 开发。如果您还没有,请考虑使用跨平台框架。使用QtAPRACEPoco之类的东西应该可以在 Windows 下通过部署/调试步骤到您的 Linux 环境进行本地开发。

于 2009-06-08T14:27:51.383 回答
7

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

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

其他选项(虚拟化、在 Windows 中运行的 Linux、Cygwin)确实有效,但也有它们的缺点,例如对机器的要求更高、更难设置,或者与实际的 linux 环境不够等效,但如果你有这台机器,场景证明了它们的使用是合理的。

如果你的机器是 Windows,在 Linux 端做任何事情总会有一些缺点。

我个人有一个 Linux 机器,其他人都有 Windows,并在 VM 内进行 Windows 开发,但它花费了我大量的 RAM 和一些网络设置的痛苦。

于 2009-06-08T13:15:59.937 回答
7

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

于 2009-06-08T13:18:03.443 回答
5

我发现在为 Linux 开发 Windows 时, coLinux非常有用,它基本上是一个与您的 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,而无需使用诸如 VMware 之类的商业 PC 虚拟化软件,这种方式比使用任何通用 PC 虚拟化软件要优化得多。

colinux 截图
(来源:colinux.org

于 2009-06-08T13:16:34.290 回答
5

有多种解决方案,我推荐No. 1

  1. 一个运行 Linux 风格的 VM(虚拟机)作为 Windows 中的来宾操作系统。从免费的VirtualBox开始。

    为了使管理更容易,您可以使用Vagrant之类的工具。Vagrant 是一种用于在单个工作流中构建和管理虚拟机环境的工具。凭借易于使用的工作流程和对自动化的关注,Vagrant 减少了开发环境的设置时间,提高了生产平价性。因此,您在 Windows PC 中编写代码并使用 Vagrant 在 Linux 系统上编译/运行应用程序。流浪者是免费的!类似的工具:也可以使用Docker 。对于此设置,您可以使用任何 IDE,我建议 VSCode 对于带有智能感知的 C/C++ 来说非常方便,但 Eclipse 也应该可以工作。

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

  3. Windows 10 提供了适用于 Linux 的 Windows 子系统,尝试使用它来编译和运行您的项目。这需要 64 位版本的 Windows 10 周年更新或更高版本(内部版本 1607+)。

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

于 2017-08-16T12:14:52.853 回答
4

Cygwin可能会有所帮助。

于 2009-06-08T13:15:21.547 回答
4

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

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

它是本地还是远程 Linux 服务器?带宽问题?因为在 LAN 上,即使是旧的 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 细节)。它位于 100 Mbit/s 的 LAN 上,就好像该应用程序是其他开发人员的本地应用程序一样。

无论如何,在今天的硬件上,我无法想象这是怎么做到的:我现在有一个 Core 2 Duo / 4GB 内存作为我的主桌面和一个千兆 LAN。

这样的设置在 4 年前运行良好,今天也运行良好。

现在,如果您告诉我您有带宽问题,或者您拥有帐户的 Linux 机器负载过重,或者它不在 LAN 上,那么情况可能会有所不同......

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

于 2010-03-04T20:00:49.273 回答
3

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

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

编辑:自从这篇文章最初发表以来的过去 13 年里,Cygwin/X(和 Xming)已经变得更好了。值得再试一次。我现在再次将它用于我的日常工作。

于 2009-06-08T13:16:38.203 回答
3

我也在使用 xming 并且遇到与 Eclipse 相同的问题。显然,切换到 cygwin 都不能让它足够快。最终我通过 xming 转而使用 vim 进行开发。它不需要像我担心的那样多的时间来适应所有的组合键,而且表现绝对流畅。实际上,现在有时即使在本地工作时我也会使用 vim。

于 2011-01-03T16:47:30.147 回答
3

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

于 2011-01-03T17:01:56.990 回答
1

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

于 2009-06-08T13:30:24.743 回答
0

使用 Linux!我通常有另一个问题:在linux下开发win。没有理由不这样做:我现在几乎一直在虚拟机上运行 win。Linux 自带了很多开发工具。

问题是:

是图形界面吗?

  • 如果没有,只要您的代码 STD/便携式,您将不会有任何问题。(X 也允许你做一些简单的事情,但是对于今天一个好的应用程序,你需要更多。)
  • 如果是,那么当您将代码实际移植到正在运行的平台上时,您将遇到很多问题。

它应该在 linux 和 windows 之间是可移植/可交换的吗?

  • 如果没有,只需在本机操作系统上进行开发。少了很多痛苦。您拥有适用于这两个平台的 Eclipse。即使您想在稍后阶段移植代码,也请先完成工作。

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

没有办法在win下开发并希望在linux上运行,除非你确定不使用任何win库。那就是:在图形应用程序中几乎没有机会。或者进行大量检查...或者您将不会使用任何获胜工具。忘记 Visual Studio。

检查确实葡萄酒和 winehq 页面。

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

底线:在 win 上移植免费代码比在自由市场上移植专有代码要容易得多。

于 2011-02-03T01:16:46.877 回答
0

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

您还可以使用 Visual Studio Code,它比 eclipse 更好更快,甚至在 linux 和 mac 中也受支持。

在 Windows 商店中检查ubuntu 发行版。

Linux 发行版也可以从其他来源下载,但微软强烈建议使用 Windows-Store 中的发行版。

于 2017-08-16T13:47:44.570 回答
0

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

检查检查

于 2017-08-16T15:24:39.403 回答