【问题标题】:Best way to setup a Windows build environment for C/C++为 C/C++ 设置 Windows 构建环境的最佳方法
【发布时间】:2010-12-11 00:05:55
【问题描述】:

基本上我想在 Windows 上使用 GCC 编译 C/C++。在我看来,两个竞争平台是 MinGW 和 Cygwin。每个都有自己的优点和局限性。 MinGW 为 Windows 编译,而 Cygwin 需要 cygwin .dll。然而,在 MinGW 上安装库很困难,而在 cygwin 上更容易,使用 setup.exe 作为“包管理器”。

我的问题是在 Windows 上编译的最佳方式是什么。使用 MinGW 并与库斗争会更好(在这种情况下,有一种在 MinGW 上安装库的简单方法)。或者我应该使用 Cygwin,如果是这样,我如何在不需要 cygwin .dll 的情况下编译它,有效地为普通 Windows 编译。

【问题讨论】:

  • 主观问题。我更喜欢 mingw,因为您没有针对兼容层进行编码。假设您想要一个免费(如啤酒)环境,您仍然会错过一些选项——Visual Studio 的 Express 版本,或 VC++ 的仅命令行版本。
  • 旧帖子,但如果人们偶然发现它,我想链接到这篇关于在 Windows 上设置 C 环境的帖子:thecodetailor.net/c-environment-on-windows。由于它描述了通过 MSYS2 进行设置,因此简化了包/库管理。

标签: c++ c windows cygwin mingw


【解决方案1】:

在 windows 上编译最简单最好的方法是使用visual studio express。这是免费的。使用 cygwin 的一个很好的理由是跨平台构建。使用 gcc 的一个很好的理由是它支持一些 Microsoft 编译器不支持的编译器糖果。

但总而言之,VC++ Express 是仅用于 Windows 开发的方式。

【讨论】:

  • 如果您使用的是 Visual Studio Express,则在不违反服务条款的情况下,您不能合法地制作商业应用程序。
  • @Andres: # 我可以将 Express Editions 用于商业用途吗?是的,使用 Visual Studio Express Edition 构建的应用程序没有许可限制。
【解决方案2】:

始终可以选择将-mno-cygwin 与 Cygwin 一起使用,以像 MinGW 那样针对 Windows 库进行编译:

gcc -mno-cygwin file.c -o test

这不是一个容易的选择,主要取决于您对其他库的依赖程度。 Cygwin 确实增加了一个额外的层,它比 MinGW 更重但更好地“模拟”了 Linux 环境。

编辑:

Qt Creator 允许您在 Windows 上使用 MinGW 进行编译(以及在 Linux 上使用 gcc,...),它有一个 IDE,它使调试比 gdb 更友好。如果您需要库,您仍然可以选择使用 Qt 库。如果您真的想坚持使用 gcc 以实现未来的可移植性,那将是 Visual Studio 的一个很好的替代解决方案。

【讨论】:

  • -mno-cygwin 标志不会创建静态二进制文件,它会创建一个不链接到 cygwin.dll 的二进制文件——本质上是一个“裸”的 win32 程序。在实践中(模数,比如从不同编译器版本生成不同的代码)这正是你从 mingw 编译器得到的。
  • 好的,谢谢你指出安迪,我会编辑答案。
  • @Andy:我真的不知道,但 Cygwin libc(可能还有其他一些库存库)不会依赖 cygwin.dll 吗? IE。如果你做-mno-cygwin,你会不会仅限于Win32 API?
  • @Pavel:来自 Cygwin 常见问题解答 (cygwin.com/faq.html),6.10:The -mno-cygwin flag to gcc makes gcc link against standard Microsoft DLLs instead of Cygwin. This is desirable for native Windows programs that don't need a UNIX emulation layer. This is not to be confused with 'MinGW' (Minimalist GNU for Windows), which is a completely separate effort.。但是如果程序使用Cygwin API,那么就不可能独立于cygwin1.dll,也就没有静态链接了。
【解决方案3】:

equation.com 有一个易于安装的 MinGW 包装的 GCC。 点击“Programming Tools”然后点击“Fortran, C, C++”,下载你喜欢的版本,安装使用。

【讨论】:

    【解决方案4】:

    您可能想查看CodeBlocks。它通常用于构建 WxWidgets 应用程序,但它很好地包装了 MinGW。

    【讨论】:

    • 我用它来玩 gcc 4.4 的 C++0x 支持。有时会崩溃,但在正常情况下可以正常工作。
    【解决方案5】:

    Qt Creator 标配 MinGW,可用于构建实际上不使用 Qt 框架的项目。

    【讨论】:

    • 我会说选择 Mingw,如果仅仅是因为 Qt Creator。真的很好。
    • 我已经在我的帖子中提到过(除了链接);-) 但是,是的,这将是我使用 gcc 开发的首选。希望尽快更新到 4.6。
    【解决方案6】:

    一种可能的方法是使用CMake,它可以从您的源代码构建 Visual Studio 项目,然后从 Visual Studio 编译。它也可以为其他IDE构建项目,所以你可以跨平台。

    【讨论】:

      【解决方案7】:

      实际上,还有选项#3:如果您的Windows 版本允许,您可以安装Microsoft Services For Unix / Subsystem for Unix Applications,然后从SUACommunity 获取gcc。它也有一个包管理器。在这 3 个选项中,这将使您的行为最接近真正的 Unix 系统。

      但是,生成的应用程序不是 Win32 应用程序;它们是 SUA 应用程序,需要 SUA 才能运行。如果您为自己编写代码,如果您为自己编写代码通常不是问题,但如果您想编写和分发一个合适的 Windows 应用程序,我建议远离任何试图模仿 Unix 的东西,所以 MinGW 它是。

      【讨论】:

        【解决方案8】:

        我认为答案取决于您是打算使用库还是编译针对 POSIX 或基于 POSIX 的目标的程序。这就是 Cygwin 的用途,而 MinGW 更适合使用 GCC 编译面向 Windows 的程序。

        【讨论】:

          【解决方案9】:

          另一个选项是 TDM MinGW:http://www.tdragon.net/recentgcc/

          它基本上是 MinGW 的非官方分支,具有可用于 32 位和 64 位 Windows 机器的最新 GCC 编译器。甚至一些 MinGW 开发人员自己也使用它。

          方程 Gcc 更好:http://www.equation.com/servlet/equation.cmd?fa=fortran

          【讨论】:

          • 这不是叉子;他们只是比官方 mingw 更频繁地发布。
          猜你喜欢
          • 2014-10-04
          • 2023-03-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-29
          • 1970-01-01
          • 2015-03-23
          • 2014-02-15
          相关资源
          最近更新 更多