【问题标题】:Costs and benefits of Linux-like Windows development environment类 Linux Windows 开发环境的成本和收益
【发布时间】:2011-01-02 16:44:45
【问题描述】:

我这学期要参加C++ 简介,所以我需要在我的 Windows 和 Ubuntu 分区中设置开发环境(我在它们之间切换)。我计划在这两种环境中都使用 GCC 以保持一致性,因为我计划在 Linux 中使用 GCC 进行严肃的 C++ 开发。

似乎安装 MSYS 和 MinGW 是使用 GCC 和复制我的 Linux 开发环境的最佳方式。但是,仅仅在 Windows 中设置 MSYS 和 MinGW 似乎是一个漫长而艰巨的过程,我想象我将来会遇到限制或兼容性问题。

  • 在 Windows 上设置类似 MSYS Linux 的开发环境的好处是否超过成本?
  • 如果我使用 Visual C++,我能否使用所有我可以使用的库?

【问题讨论】:

  • “成本” 取决于您的课程包含的内容 - 如果只是使用标准库,则不会有真正的问题。
  • cygwin 的安装程序并不简单,cygwin 传统上相当具有侵入性(直到最近的 1.7 版本,不允许 DLL 的多个副本和平共存),并且很难卸载。我不记得安装 MinGW 和 MSYS 是一个漫长而艰巨的过程,它的好处是可以编译原生 Win32 二进制文件。

标签: c++ windows development-environment mingw msys


【解决方案1】:

我认为你的做法是错误的——我实际上建议你在 Windows 环境中使用 Visual Studio,而不是特意设置 GCC。在来自多个供应商的多个编译器上运行您的代码是一个好处,而不是一个缺点。

GCC 和 Visual Studio 都高度一致(至少是最新版本)。使用标准库并在它们之间切换不会有任何问题,如果确实遇到问题,则可能是代码中的问题。

【讨论】:

  • 嗯,我没有想过尝试两个编译器可能带来的好处。这就像在多个浏览器上测试 Javascript 应用程序一样;一个人可能会发现另一个人遗漏的问题。感谢不同的观点。
  • 不确定这是否是真的,C++ 标准在不同浏览器上比 javascript 好一点。对于相当复杂的项目,您将花费大量时间使 makefile 和项目保持同步并了解链接器标志在 VS IDE 中的位置。
  • 像 CMake 这样的东西可以负责保持 makefile/项目同步
  • VS 并不完全符合标准,即使禁用扩展,它也会编译很多无效的 C++ 代码(例如:struct Test { void Test::A() { } };struct Test { template <class T> void a() { } };vector<vector<int>>enum 会自动转换为 @987654325 @ 调用专门的模板函数时)。不要误会我的意思,我喜欢 VS,我只是觉得当我提交构建失败并且人们生我的气时很烦人。 (PS:以上任何一个都不会发出警告;在 GCC 中它们都是错误)
  • @Andreas 您在第一个计数上是正确的(具有额外的 Test:: 资格),但是您的第二个和第三个示例是在 VC 和 GCC 中编译的完全合法的代码(“最大>> 的 munch" 问题是一个标准缺陷,所有主要编译器多年来都实施了该解决方案)。而且,嗯,枚举应该按需转换为 int 。我不太明白你在这里的意思 - 你能具体点吗?
【解决方案2】:

我一直在 Windows 上安装 cygwin。对我来说,没有它,Windows 完全无法使用。我从来没有真正遇到过上面提到的 DLL 的问题。但是,我也很少使用 GCC 编译器,所以我不知道它与 Visual Studio 相比如何进行一般编程。对于任何基于 Windows GUI 或基于 Dot Net 的东西,我肯定会坚持使用 Visual Studio。

【讨论】:

    【解决方案3】:

    如果你坚持使用automated installer,MinGW 安装一点也不痛苦。不幸的是,目前为您提供的是 GCC 3.4.5,而不是他们还提供无安装程序的较新的 4.4.0 版本。

    实际上,对于课程作业,我想 3.4.5 就可以了。

    【讨论】:

      【解决方案4】:

      在 Ubuntu 上使用 gcc 并在 Windows 上使用 Visual Studio 来接触两者。这是一门入门课程,因此 Windows、Linux、Visual Studio、gcc 只是您掌握 C++ 和数据结构所需的工具。掌握这些工具会随着时间的推移而改变。

      【讨论】:

        【解决方案5】:

        我个人使用纯 Linux 环境为 windows 开发,在 Linux 上使用 mingw-gcc 为 windows 进行交叉编译。 我放了一个关于如何为 OpenSSL/Qt4 @http://www.limitlessfx.com设置它的教程

        【讨论】:

          【解决方案6】:

          您这样做是为了获取 .exe,还是只是为了能够在两种操作系统上工作?

          如果你觉得 GCC 比 VC 更舒服,设置 Mingw/Cygwin 是可能的,但不会给你任何新功能(除了 .exes)。相反,我建议您将其中一个分区变成虚拟机 - 这样您就可以同时打开两个操作系统! (我个人的选择是 Windows inside Linux,YMMV。)

          在 Linux 上进行开发的好处是大量的开发工具和库随时可用。此外,大型构建明显更快。

          【讨论】:

            【解决方案7】:

            既然你说“我打算用 GCC 在 Linux 中进行严肃的 C++ 开发”,VC++ 可能不是你真正想要的。许多库在 VC++ 中不能很好地编译。自己尝试一些。相反,请考虑在 Windows 上运行 Linux。有几种方法可以做到这一点:

            1. 使用PuTTY连接Linux机器,使用Xming查看UI窗口。我只会通过 LAN 执行此操作。
            2. 考虑coLinux。您可以在 Windows 下运行 Linux,完成后只需关闭 Linux。
            3. 考虑使用 VMWare 等其他虚拟化选项来运行 Linux。与 coLinux 几乎相同,但可能更容易设置。

            您甚至可能想直接在您的机器上安装 Linux。如果需要,您可以随时使用 Wine 或 VMWare 等工具运行 Windows。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-11-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-08-11
              • 2011-09-28
              • 1970-01-01
              • 2014-05-30
              相关资源
              最近更新 更多