Windows 是不是有集成的内置 C/C++ 编译器包?

Posted

技术标签:

【中文标题】Windows 是不是有集成的内置 C/C++ 编译器包?【英文标题】:Has Windows an integrated built-in C/C++ compiler package?Windows 是否有集成的内置 C/C++ 编译器包? 【发布时间】:2020-01-20 09:24:31 【问题描述】:

我希望能够在不使用 IDE 的情况下在 Windows 环境下编译 C 和 C++ 代码,只需使用 Windows 命令提示符 (cmd.exe)。

我来自 Linux,您只需在终端中输入一个命令即可安装 gcc 软件包:

$ sudo apt install gcc

我想知道Windows安装文件夹内的一个包中是否有一个C/C++编译器集合,就像Linux中的一样,我只需要安装。

让我有理由问这个问题的是:

由于 Windows 的内核和 Windows API 是用 C 编写的,而实际 Windows 10 版本的许多高级应用程序都是用 C++ 编写的,因此直接提供合适的编译器套件也是合理的。这是我的想法模型,不需要与现实相匹配。

感谢您的帮助。

【问题讨论】:

如果您想在 Windows 上安装 GCC,请查看 MinGW。也可以在命令行使用 cl.exe 编译代码。 “直接提供合适的编译器套件也是合理的”windows 并不是真正已知的让用户控制的操作系统;) 您可以安装 C++ microsoft 工具集(而不是从命令行)然后您可以使用“本机”Windows 编译器 (cl.exe) 而无需安装 IDE。你也可以使用 MinGW,它可以让你为 windows 安装 gcc。 不幸的是,没有内置编译器。您需要安装一个。 @RobertS-ReinstateMonica NMAKE 调用 cl.exe 和(如果成功)link.exe。那是 MSVC 编译器,而不是不同的编译器。 【参考方案1】:

由于 Windows 的内核和 Windows API 是用 C 编写的

Microsoft 没有在安装中为 Windows 提供编译器或所需的 Windows SDK headers/libs(还包括许多其他有用的开发工具)。 Microsoft Visual C++(Visual Studio 的一部分)将是等效的“内置”选择,尽管我不确定 Microsoft 是否曾准确指定它们用于给定 Windows 构建的版本,并且通常有很多软件使用不同的构建编译器/版本(包括各种非 Microsoft 的)。

以及带有 IDE 和其他工具的完整 Visual Studio 包。 Microsoft 单独提供了一些组件,例如Build Tools for Visual Studio 2019。

我确信这是由于许多原因,例如大多数用户对编译自己的软件不感兴趣,并且 Microsoft 仍然将 Visual Studio 单独出售给更大的组织(历史上面向最认真的用户,但“社区”版现在对个人和小型企业)。

【讨论】:

【参考方案2】:

奇怪的是它没有附带 C 编译器,我们需要安装一个,Mingw-w64 始终是我的选择,如果你想在任何地方使用它,你需要add the path in environment variables(第 12 步)。然后你可以使用gcc命令,它像在Linux中更方便,不要忘记在更改后打开一个新的cmd以使其生效。

不幸的是,Windows 没有用于安装/删除内容的命令行工具以及我们从 Linux 中了解和喜爱的出色存储库基础架构。

【讨论】:

如果您安装整个 MSYS2 工具包而不是仅安装 GCC,您将获得链接到与 linux 发行版一样工作的包存储库的命令行工具。 @anastaciu 使用 MingW 是一个很好的选择。我以前使用过 MingW。尽管如此,在通过 MingW 实现在 Windows 中使用诸如 gcc 之类的第三方编译器套件之前,我想更多地了解微软自己的方式。谢谢你,anastaciu 的小费。 @RobertS-ReinstateMonica 这是一个很好的心态,我使用 Visual Studio Community 2019,它已经取得了长足的进步,它现在是一个很棒的 IDE,我的最爱之一,也就是说,它是内置的在我看来,开发工具的设计并没有真正考虑到命令行的使用,但我可能是错的。 Mingw 最大的警告是它使用了与 MSVC 不同的、不兼容的 ABI。这意味着您不能将 mingw gcc 与为 MSVC 使用而编译的 C++ 库一起使用。反之亦然,导致我们在 Windows 上有两个不兼容的 C++ 生态系统的不幸情况:MSVC 是本地生态系统,而 Mingw 是用于与尚未移植到 MSVC 的 GNU 组件交互的生态系统。请注意,与 mingw 的 gcc 不同,Windows 的 clang 能够使用 MSVC ABI 生成本机 C++ 应用程序。【参考方案3】:

你需要两件事:

命令行构建工具。这些可以在 Visual Studio 工具 -> Visual Studio 构建工具 下的Visual Studio Downloads 页面上找到。这将包括 MSVC 构建工具链的编译器 (cl.exe) 和链接器 (link.exe)。 Windows SDK。目前最新版本的 SDK 可以是found here。这个页面有移动的趋势,但谷歌搜索 Windows SDK 通常会立即为您提供正确的页面。 SDK 包含构建 Windows 应用程序和使用 Windows 本机 API 所需的所有头文件和库。 Windows SDK 包含很多您可能需要也可能不需要的东西。您几乎肯定会想要安装Windows SDK for Desktop C++ x86 AppsWindows SDK for Desktop C++ amd64 Apps 组件。大多数其他东西应该是可选的,但其中一些仍然非常有用。 您可能需要下载其他软件包,例如 Windows Debugger(这是一个与 Visual Studio 调试器完全不同的应用程序)或 Driver SDK,具体取决于您想要什么类型的东西发展。

请注意,即使您最终不打算使用 IDE,安装完整的 Visual Studio 社区版也是获得工作构建环境的一种更方便的方法,因此除非您有充分的理由不到,只需使用完整包并选择从不打开 IDE。

【讨论】:

【参考方案4】:

Windows 10 上可用的内置编译器适用于 VisualBasic、C#、JScript。 为了提高应用程序的速度和性能,“ngen.exe 创建本地映像,这些文件包含已编译的特定于处理器的机器代码,并将它们安装到本地计算机上的本地映像缓存中。运行时可以使用缓存中的本地映像代替使用即时 (JIT) 编译器编译原始程序集”。

对于低级程序员,ilasm.exe(IL Assembler)随Windows一起提供,也便于“工具和编译器”的开发;因此您甚至可以创建自己的语言或为当前语言构建更好的编译器,或者“在低级别调试代码并了解 .NET 如何处理您的高级代码”,或者“为新的 .NET 编写自己的编译器语言。”

对于 Web 程序员,AspNetCompiler 预编译服务器端 ASP.NET Web 应用程序,因此 helps application performance because end users do not encounter a delay on the first request to the application。

所有编译器和汇编器都内置在没有 IDE 的 Windows 中,可以从“Windows 命令提示符 (cmd.exe)”运行,因此无需额外下载;位于文件夹:C:\Windows\Microsoft.NET\Framework\vx.x.xxxxx\ .

注意:C# 基于 JScript。

编译器:

vbc.exe csc.exe jsc.exe ilasm.exe ngen.exe aspnet_compiler.exe

附录

如果您仍在寻找 C 编译器来处理您已经花费了一生的 C 源代码,那么(无需下载)您可以使用高级语言制作 /write a C compiler,然后使用低级语言。

This guide 将“向您介绍构建您自己的 .NET 编译器所需的高级架构、理论和 .NET Framework API”。

【讨论】:

【参考方案5】:

您可以将gcc 用于Windows。例如mingwtdm-gccmingw-68Cygwin 等。它们中的每一个都允许您在 c/c++ 上工作。但是,如果您不确定安装过程,并且不想自己完成所有工作,最简单的解决方案是下载dev-c++code-blocks 之类的东西。

cygwin:https://cygwin.com/ mingw-64:http://mingw-w64.org/doku.php 可在此处找到可下载的文件(mingwdev-c++):https://sourceforge.net/

【讨论】:

【参考方案6】:

您还可以安装 Microsoft 编译器。我通常通过安装整个视觉工作室来做到这一点。

【讨论】:

那个“微软编译器”叫什么名字,如何单独安装?并且我以后在安装它时也可以在没有 IDE 的情况下使用这个编译器吗?用“visual studio”是指Microsoft Visual Studio 还是Microsoft Visual C++? @RobertS-ReinstateMonica 见en.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B。您通常通过安装 Visual Studio 来获得 MSVC(这样您还可以获得所有必要的库/框架组件,用于您想要进行的开发)。请注意,Visual Studio 具有免费许可证(非免费许可证主要添加企业/团队功能),但它是封闭源代码(与大多数 MS 生态系统一样)。 @MaxLanghof 好的,我了解了 MSVC 和 Visual Studio 部分。但是那个“微软编译器”P__J__ 已经说过了。我的假设是否正确,这个“微软编译器”是cl.exe?我以后可以在没有 IDE 的情况下使用这个编译器吗? @RobertS-ReinstateMonica 这是编译器,是的。链接器是link.exe。您可能想看看docs.microsoft.com/en-us/cpp/build/reference/…,因为这两个不是工具链的唯一部分。是的,您可以在没有 IDE 的情况下使用所有这些。我不确定您是否可以一开始就跳过安装 IDE。 @RobertS-ReinstateMonica 真的只是一个“编译器”本身没有用,GCC 也是多个组件,其他 Linux 包提供 C 运行时和头文件等必需品。 VS 或独立构建工具具有命令行选项,但以这种方式开发相当罕见,即使在 VS 项目文件上使用msbuild 而不是直接使用cl.exe/link.exe/等。很常见。

以上是关于Windows 是不是有集成的内置 C/C++ 编译器包?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 Windows 中将 nvcc 与 gcc/g++ 集成?

[TimLinux] Python 初学者必看

Windows 窗体中是不是有内置确认对话框?

如何使 clang 编译为 llvm IR

如何将javascript代码编译为c++或java

几个linux 下C/C++集成开发环境推荐