【问题标题】:Switching to Linux for Windows development, bad idea?切换到 Linux 进行 Windows 开发,这是个坏主意吗?
【发布时间】:2009-02-27 14:11:37
【问题描述】:

我正在考虑从 Windows 环境切换到 Linux 进行 C++ 开发。这是一个坏主意吗?我的工作场所为我们的项目使用 Windows 和 Visual Studio(一些 C# 和 java,但现在我只使用 C++ 进行开发)。如果他们决定让我参与 C# 项目,开发是否仍然可行(单声道?)?这种过渡有什么困难?

我在处理他们的项目时会遇到问题吗?反之亦然?我在某处读到预编译的标头等(我们确实使用它们)和编码(制表符/空格、行尾等)会有问题..

如果进行此切换不是太难,我该如何开始? IDE? vim+制作?

谢谢。

顺便说一句,我们主要制作 Windows 软件..


编辑:谢谢大家,我想这是有道理的..

【问题讨论】:

    标签: c++ windows linux cross-platform development-environment


    【解决方案1】:

    这是个坏主意。我至少可以看到两个原因:

    • 在您为其编写软件的同一操作系统上开发
    • Visual Studio 摇滚

    【讨论】:

    • 虽然我肯定会怀念 GNU 工具链和 *nix 编辑器惊人的强大功能,但在 Windows 中不使用 VS 没有任何意义。
    • 适用于 VS,就像在同一个操作系统上开发一样...是的,在手机上为 S60 或 WM 开发东西?
    • @vartec:该语句有意简洁地说明问题:对于所有规则,您都有例外。
    • +1 第一个原因。至于 VS,它适用于托管语言,但不适用于 C++;我现在只用它来调试。
    • VS + VisualAssist 可用。但是,是的,在 Windows IDE 上开发 Windows。
    【解决方案2】:

    如果您正在为 C++ 和 C# 进行开发,请坚持使用 Windows。 Visual Studio 调试器绝对出色,而且似乎大多数 Linux IDE 都没有可比性(Java 的 Eclipse 除外)。 此外,如果您在 Linux 上,您可能会使用不同的编译器,这可能会导致真的奇怪的错误。

    【讨论】:

    • 我只想指出,在 VS 上进行调试——或其他任何与此相关的东西——在 DDD 上没有任何作用。调试根本没有比较。诚然,它使用过时的工具包(Motif),并且没有“真正的”Win 端口(使用 Cygwin 和 X 服务器)。
    【解决方案3】:

    我是 Mac 用户(前 FreeBSD 人),所以我理解您的直觉。简而言之:您将要使用 Visual Studio。它是您的 C# 项目的最佳工具。它也是您以 Windows 为中心的 C++ 编程的最佳工具。即使不是,如果您不运行要运行的操作系统,您的测试也会受到影响。

    从好的方面来说,始终在虚拟机中进行开发。尤其是在 Windows 上。使用源代码控制并经常为您的虚拟机拍摄快照。执行此操作时,无论您在主机上运行 Linux 还是 OS X 都没有关系。

    干杯

    尼克

    【讨论】:

    • 嗨,你能澄清一下吗?我应该使用哪种虚拟机?我自己使用源代码控制,因为团队没有。
    • 当你开发时,我认为这并不重要。我在家里使用 Parallels,在工作中使用 VMWare,但您也可以使用 Sun 的 VirtualBox。我没有尝试过其他人,但对于开发,我确信一切都很好。你不需要 3D 游戏能力:-)
    【解决方案4】:

    这不是一个好主意,因为对单声道 Windows 窗体的支持尚未完成。 Linux c# 开发人员通常将 GtkSharp 用于 GUI,这将为您的应用程序添加另一个依赖项,并且与 Windows 窗体有很大不同。但 GtkSharp 也不错。我特别喜欢 GTK 的包装盒功能,因为它使我的控件(错误、小部件)更容易正确调整大小并自动消除所有屏幕 DPI 问题。

    但也有可能您的现有代码可能具有其他 Linux 上不存在的依赖项,尤其是使用 P/Invoke 调用的非托管代码。如果是这样,在 Linux 上进行开发可能是不可能的。

    【讨论】:

    • Mkay.. 谢谢.. 我不是真正的 C# 开发人员,只是提前考虑以防他们向我扔东西.. :)
    【解决方案5】:

    我目前在 windows 和 linux 上进行开发。我发现在这两个(或更多)平台下编译相同的代码非常有用,因为由于 vc++ 和 gcc,您可以发现一些编码错误。当然,最重要的平台是您正在开发的平台。如果您的应用程序将在 Windows 上运行,请在同一平台上开发它,并且只有在您可以分配更多资源的情况下,尝试将其移植到 linux 或其他平台上。 无论如何,在开发过程中考虑可移植性是一个好习惯,这意味着尽可能使用标准解决方案

    【讨论】:

      【解决方案6】:

      我已经转为在 linux 上进行 Web 开发, 这是我个人发现的

      为了做正确的事情最终不会导致问题(使用特定软件),我必须有一个虚拟机。对于我需要的软件来说,Wine 还不够稳定

      另外,为了我的特殊需要,只是整个“系统字体”的不同导致了大量的脚本问题 b/w windows 和 unix/linux

      我将切换回胜利。我喜欢 LINUX,但在我的大多数客户使用 Windows 和 IE 的专业领域......我需要用他们所拥有的东西来运行...... 我认为这是最聪明的生产力

      (个人意见,不是上帝的命令)

      提姆

      【讨论】:

        【解决方案7】:

        我建议坚持使用 Windows。 Windows 非常适合 Windows 开发。 Linux 是您可以编写跨平台内容/Linux 特定内容的地方(如果您愿意)。我尝试使用 Mono 来学习 C#,它适用于玩具示例,但不适用于 .NET 的某些部分。我切换回窗户。我无法想象切换到 Linux 是个好主意。我无意冒犯,这只是我的看法。

        【讨论】:

        • 无意冒犯 :) 只是想从以前尝试过的人那里得到一些建议 :) 谢谢
        【解决方案8】:

        如果您缺少很多 Linux - 并且您需要留在 Windows 机器上与您的团队和您的工作应用程序交互 - 安装 CygwinGNU Win32 tools

        【讨论】:

        • 我已经有一些 GNUwin32 工具,我发现 cygwin 很古怪,但我并没有太多使用它,所以我的意见不算数 :) 我确实喜欢 linux,我尝试在我的 EEE 上尽可能多地使用它.. :)
        【解决方案9】:

        如果你绝对在 Linux 上销售,VMWare 非常适合运行虚拟机,如果你使用 mingw 工具链编译你的 Linux / 跨平台程序,添加一个可以静态的依赖项,你不应该获取任何 Windows 错误。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-10-10
          • 2016-12-08
          • 2020-12-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-20
          相关资源
          最近更新 更多